Просмотр исходного кода

Result: Use weak-references in promises when possible

Ask Solem 8 лет назад
Родитель
Сommit
b52d44f1a2
1 измененных файлов с 5 добавлено и 5 удалено
  1. 5 5
      celery/result.py

+ 5 - 5
celery/result.py

@@ -92,7 +92,7 @@ class AsyncResult(ResultBase):
         self.id = id
         self.backend = backend or self.app.backend
         self.parent = parent
-        self.on_ready = promise(self._on_fulfilled)
+        self.on_ready = promise(self._on_fulfilled, weak=True)
         self._cache = None
 
     def then(self, callback, on_error=None, weak=False):
@@ -168,7 +168,7 @@ class AsyncResult(ResultBase):
         assert_will_not_block()
         _on_interval = promise()
         if follow_parents and propagate and self.parent:
-            on_interval = promise(self._maybe_reraise_parent_error)
+            on_interval = promise(self._maybe_reraise_parent_error, weak=True)
             self._maybe_reraise_parent_error()
         if on_interval:
             _on_interval.then(on_interval)
@@ -461,7 +461,7 @@ class ResultSet(ResultBase):
         self.on_ready = promise(args=(self,))
         self._on_full = ready_barrier or barrier(results)
         if self._on_full:
-            self._on_full.then(promise(self.on_ready))
+            self._on_full.then(promise(self.on_ready, weak=True))
 
     def add(self, result):
         """Add :class:`AsyncResult` as a new member of the set.
@@ -884,8 +884,8 @@ class EagerResult(AsyncResult):
         self._result = ret_value
         self._state = state
         self._traceback = traceback
-        self.on_ready = promise(args=(self,))
-        self.on_ready()
+        self.on_ready = promise()
+        self.on_ready(self)
 
     def then(self, callback, on_error=None, weak=False):
         return self.on_ready.then(callback, on_error)