Ask Solem преди 13 години
родител
ревизия
371a359365
променени са 2 файла, в които са добавени 11 реда и са изтрити 26 реда
  1. 8 14
      celery/backends/mongodb.py
  2. 3 12
      celery/tests/backends/test_mongodb.py

+ 8 - 14
celery/backends/mongodb.py

@@ -3,8 +3,6 @@
 """MongoDB backend for celery."""
 """MongoDB backend for celery."""
 from __future__ import absolute_import
 from __future__ import absolute_import
 
 
-import warnings
-
 from datetime import datetime
 from datetime import datetime
 
 
 try:
 try:
@@ -12,6 +10,14 @@ try:
 except ImportError:  # pragma: no cover
 except ImportError:  # pragma: no cover
     pymongo = None   # noqa
     pymongo = None   # noqa
 
 
+if pymongo:
+    try:
+        from bson.binary import Binary
+    except ImportError:                     # pragma: no cover
+        from pymongo.binary import Binary   # noqa
+else:                                       # pragma: no cover
+    Binary = None                           # noqa
+
 from kombu.utils import cached_property
 from kombu.utils import cached_property
 
 
 from celery import states
 from celery import states
@@ -97,12 +103,6 @@ class MongoBackend(BaseDictBackend):
 
 
     def _store_result(self, task_id, result, status, traceback=None):
     def _store_result(self, task_id, result, status, traceback=None):
         """Store return value and status of an executed task."""
         """Store return value and status of an executed task."""
-        try:
-            from bson.binary import Binary
-        except ImportError:
-            from pymongo.binary import Binary
-            warnings.warn("pymongo.binary has been removed in pymongo>2.2 in favor of bson.binary")
-            
         meta = {"_id": task_id,
         meta = {"_id": task_id,
                 "status": status,
                 "status": status,
                 "result": Binary(self.encode(result)),
                 "result": Binary(self.encode(result)),
@@ -131,12 +131,6 @@ class MongoBackend(BaseDictBackend):
 
 
     def _save_taskset(self, taskset_id, result):
     def _save_taskset(self, taskset_id, result):
         """Save the taskset result."""
         """Save the taskset result."""
-        try:
-            from bson.binary import Binary
-        except ImportError:
-            from pymongo.binary import Binary
-            warnings.warn("pymongo.binary has been removed pymongo >2.1 in favor of bson.binary")
-            
         meta = {"_id": taskset_id,
         meta = {"_id": taskset_id,
                 "result": Binary(self.encode(result)),
                 "result": Binary(self.encode(result)),
                 "date_done": datetime.utcnow()}
                 "date_done": datetime.utcnow()}

+ 3 - 12
celery/tests/backends/test_mongodb.py

@@ -11,17 +11,10 @@ from pickle import loads, dumps
 from celery import Celery
 from celery import Celery
 from celery import states
 from celery import states
 from celery.backends import mongodb as module
 from celery.backends import mongodb as module
-from celery.backends.mongodb import MongoBackend, Bunch
+from celery.backends.mongodb import MongoBackend, Bunch, pymongo
 from celery.exceptions import ImproperlyConfigured
 from celery.exceptions import ImproperlyConfigured
 from celery.tests.utils import AppCase
 from celery.tests.utils import AppCase
 
 
-
-try:
-    import pymongo
-except ImportError:
-    pymongo = None  # noqa
-
-
 COLLECTION = "taskmeta_celery"
 COLLECTION = "taskmeta_celery"
 TASK_ID = str(uuid.uuid1())
 TASK_ID = str(uuid.uuid1())
 MONGODB_HOST = "localhost"
 MONGODB_HOST = "localhost"
@@ -37,21 +30,19 @@ class test_MongoBackend(AppCase):
     def setUp(self):
     def setUp(self):
         if pymongo is None:
         if pymongo is None:
             raise SkipTest("pymongo is not installed.")
             raise SkipTest("pymongo is not installed.")
-        from pymongo import binary
 
 
         R = self._reset = {}
         R = self._reset = {}
         R["encode"], MongoBackend.encode = MongoBackend.encode, Mock()
         R["encode"], MongoBackend.encode = MongoBackend.encode, Mock()
         R["decode"], MongoBackend.decode = MongoBackend.decode, Mock()
         R["decode"], MongoBackend.decode = MongoBackend.decode, Mock()
-        R["Binary"], binary.Binary = binary.Binary, Mock()
+        R["Binary"], module.Binary = module.Binary, Mock()
         R["datetime"], datetime.datetime = datetime.datetime, Mock()
         R["datetime"], datetime.datetime = datetime.datetime, Mock()
 
 
         self.backend = MongoBackend()
         self.backend = MongoBackend()
 
 
     def tearDown(self):
     def tearDown(self):
-        from pymongo import binary
         MongoBackend.encode = self._reset["encode"]
         MongoBackend.encode = self._reset["encode"]
         MongoBackend.decode = self._reset["decode"]
         MongoBackend.decode = self._reset["decode"]
-        binary.Binary = self._reset["Binary"]
+        module.Binary = self._reset["Binary"]
         datetime.datetime = self._reset["datetime"]
         datetime.datetime = self._reset["datetime"]
 
 
     def test_Bunch(self):
     def test_Bunch(self):