浏览代码

added groupmeta default

ocean1 10 年之前
父节点
当前提交
0762057678
共有 1 个文件被更改,包括 17 次插入13 次删除
  1. 17 13
      celery/backends/mongodb.py

+ 17 - 13
celery/backends/mongodb.py

@@ -20,7 +20,7 @@ if pymongo:
         from bson.binary import Binary
     except ImportError:                     # pragma: no cover
         from pymongo.binary import Binary   # noqa
-    from pymongo.errors import InvalidDocument # noqa
+    from pymongo.errors import InvalidDocument  # noqa
 else:                                       # pragma: no cover
     Binary = None                           # noqa
     InvalidDocument = None                  # noqa
@@ -39,13 +39,16 @@ from .base import BaseBackend
 
 __all__ = ['MongoBackend']
 
-BINARY_CODECS = frozenset(['pickle','msgpack'])
+BINARY_CODECS = frozenset(['pickle', 'msgpack'])
+
+# register a fake bson serializer which will return the document as it is
+
 
-#register a fake bson serializer which will return the document as it is
 class bson_serializer():
+
     @staticmethod
     def loads(obj, *args, **kwargs):
-        if isinstance(obj,string_t):
+        if isinstance(obj, string_t):
             try:
                 from anyjson import loads
                 return loads(obj)
@@ -58,10 +61,11 @@ class bson_serializer():
         return obj
 
 register('bson', bson_serializer.loads, bson_serializer.dumps,
-    content_type='application/data',
-    content_encoding='utf-8')
+         content_type='application/data',
+         content_encoding='utf-8')
+
+disable_insecure_serializers(['json', 'bson'])
 
-disable_insecure_serializers(['json','bson'])
 
 class Bunch(object):
 
@@ -77,6 +81,7 @@ class MongoBackend(BaseBackend):
     password = None
     database_name = 'celery'
     taskmeta_collection = 'celery_taskmeta'
+    groupmeta_collection = 'celery_groupmeta'
     max_pool_size = 10
     options = None
 
@@ -123,7 +128,7 @@ class MongoBackend(BaseBackend):
                 'taskmeta_collection', self.taskmeta_collection,
             )
             self.groupmeta_collection = config.pop(
-                'groupmeta_collection', self.taskmeta_collection,
+                'groupmeta_collection', self.groupmeta_collection,
             )
 
             self.options = dict(config, **config.pop('options', None) or {})
@@ -138,7 +143,6 @@ class MongoBackend(BaseBackend):
             # Specifying backend as an URL
             self.host = url
 
-
     def _get_connection(self):
         """Connect to the MongoDB server."""
         if self._connection is None:
@@ -172,7 +176,7 @@ class MongoBackend(BaseBackend):
 
     def encode(self, data):
         payload = super(MongoBackend, self).encode(data)
-        #serializer which are in a unsupported format (pickle/binary)
+        # serializer which are in a unsupported format (pickle/binary)
         if self.serializer in BINARY_CODECS:
             payload = Binary(payload)
 
@@ -213,7 +217,7 @@ class MongoBackend(BaseBackend):
         # if collection don't contain it try searching in the
         # group_collection it could be a groupresult instead
         obj = self.collection.find_one({'_id': task_id}) or \
-              self.group_collection.find_one({'_id': task_id})
+            self.group_collection.find_one({'_id': task_id})
         if not obj:
             return {'status': states.PENDING, 'result': None}
 
@@ -231,7 +235,7 @@ class MongoBackend(BaseBackend):
     def _save_group(self, group_id, result):
         """Save the group result."""
 
-        task_ids = [ i.id for i in result ]
+        task_ids = [i.id for i in result]
 
         meta = {'_id': group_id,
                 'result': self.encode(task_ids),
@@ -248,7 +252,7 @@ class MongoBackend(BaseBackend):
 
         tasks = self.decode(obj['result'])
 
-        tasks = [ AsyncResult(task) for task in tasks ]
+        tasks = [AsyncResult(task) for task in tasks]
 
         meta = {
             'task_id': obj['_id'],