فهرست منبع

Implements steeves dynamic tasks as task.replace. Issue #817

Ask Solem 11 سال پیش
والد
کامیت
7ad7a57fa1
1فایلهای تغییر یافته به همراه11 افزوده شده و 0 حذف شده
  1. 11 0
      celery/app/task.py

+ 11 - 0
celery/app/task.py

@@ -661,6 +661,17 @@ class Task(object):
             raise ret
             raise ret
         return ret
         return ret
 
 
+    def replace(self, sig):
+        request = self.request
+        sig.set_immutable(True)
+        chord_id, request.chord = request.chord, None
+        group_id, request.group = request.group, None
+        callbacks, request.callbacks = request.callbacks, [sig]
+        if group_id or chord_id:
+            sig.set(group=group_id, chord=chord_id)
+        sig |= callbacks[0]
+        return sig
+
     def apply(self, args=None, kwargs=None,
     def apply(self, args=None, kwargs=None,
               link=None, link_error=None, **options):
               link=None, link_error=None, **options):
         """Execute this task locally, by blocking until the task returns.
         """Execute this task locally, by blocking until the task returns.