Parcourir la source

Updated backend to use bson.binary as pymongo >2.1 removed pymongo.binary

Matthew Miller il y a 13 ans
Parent
commit
ad6cccf115
1 fichiers modifiés avec 15 ajouts et 4 suppressions
  1. 15 4
      celery/backends/mongodb.py

+ 15 - 4
celery/backends/mongodb.py

@@ -1,7 +1,10 @@
+
 # -*- coding: utf-8 -*-
 """MongoDB backend for celery."""
 from __future__ import absolute_import
 
+import warnings
+
 from datetime import datetime
 
 try:
@@ -94,8 +97,12 @@ class MongoBackend(BaseDictBackend):
 
     def _store_result(self, task_id, result, status, traceback=None):
         """Store return value and status of an executed task."""
-        from pymongo.binary import Binary
-
+        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,
                 "status": status,
                 "result": Binary(self.encode(result)),
@@ -124,8 +131,12 @@ class MongoBackend(BaseDictBackend):
 
     def _save_taskset(self, taskset_id, result):
         """Save the taskset result."""
-        from pymongo.binary import Binary
-
+        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,
                 "result": Binary(self.encode(result)),
                 "date_done": datetime.utcnow()}