Browse Source

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

Matthew Miller 13 years ago
parent
commit
ad6cccf115
1 changed files with 15 additions and 4 deletions
  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()}