Przeglądaj źródła

Mongodb backend: Use the current serializer instead of pickle. Closes #464

Ask Solem 13 lat temu
rodzic
commit
c7b3cca220
1 zmienionych plików z 4 dodań i 5 usunięć
  1. 4 5
      celery/backends/mongodb.py

+ 4 - 5
celery/backends/mongodb.py

@@ -9,7 +9,6 @@ except ImportError:
 from celery import states
 from celery.backends.base import BaseDictBackend
 from celery.exceptions import ImproperlyConfigured
-from celery.utils.serialization import pickle
 from celery.utils.timeutils import maybe_timedelta
 
 
@@ -98,9 +97,9 @@ class MongoBackend(BaseDictBackend):
 
         meta = {"_id": task_id,
                 "status": status,
-                "result": Binary(pickle.dumps(result)),
+                "result": Binary(self.encode(result)),
                 "date_done": datetime.now(),
-                "traceback": Binary(pickle.dumps(traceback))}
+                "traceback": Binary(self.encode(traceback))}
 
         db = self._get_database()
         taskmeta_collection = db[self.mongodb_taskmeta_collection]
@@ -120,9 +119,9 @@ class MongoBackend(BaseDictBackend):
         meta = {
             "task_id": obj["_id"],
             "status": obj["status"],
-            "result": pickle.loads(str(obj["result"])),
+            "result": self.decode(obj["result"]),
             "date_done": obj["date_done"],
-            "traceback": pickle.loads(str(obj["traceback"])),
+            "traceback": self.decode(obj["traceback"]),
         }
 
         return meta