Browse Source

Pickle does not have to convert GroupResult but others should also convert AsyncResult. Closes #1750

Ask Solem 11 years ago
parent
commit
31b931d5e2
1 changed files with 5 additions and 5 deletions
  1. 5 5
      celery/backends/base.py

+ 5 - 5
celery/backends/base.py

@@ -26,10 +26,13 @@ from kombu.serialization import (
 from kombu.utils.encoding import bytes_to_str, ensure_bytes, from_utf8
 
 from celery import states
+from celery import current_app, maybe_signature
 from celery.app import current_task
 from celery.exceptions import ChordError, TimeoutError, TaskRevokedError
 from celery.five import items
-from celery.result import result_from_tuple, GroupResult
+from celery.result import (
+    AsyncResult, GroupResult, allow_join_result, result_from_tuple,
+)
 from celery.utils import timeutils
 from celery.utils.functional import LRUCache
 from celery.utils.serialization import (
@@ -46,7 +49,6 @@ PY3 = sys.version_info >= (3, 0)
 
 def unpickle_backend(cls, args, kwargs):
     """Return an unpickled backend."""
-    from celery import current_app
     return cls(*args, app=current_app._get_current_object(), **kwargs)
 
 
@@ -145,7 +147,7 @@ class BaseBackend(object):
 
     def prepare_value(self, result):
         """Prepare value for storage."""
-        if isinstance(result, GroupResult):
+        if self.serializer != 'pickle' and isinstance(result, AsyncResult):
             return result.as_tuple()
         return result
 
@@ -480,8 +482,6 @@ class KeyValueStoreBackend(BaseBackend):
     def on_chord_part_return(self, task, propagate=None):
         if not self.implements_incr:
             return
-        from celery import maybe_signature
-        from celery.result import GroupResult, allow_join_result
         app = self.app
         if propagate is None:
             propagate = self.app.conf.CELERY_CHORD_PROPAGATES