|
@@ -10,6 +10,7 @@
|
|
from __future__ import absolute_import
|
|
from __future__ import absolute_import
|
|
|
|
|
|
from collections import deque
|
|
from collections import deque
|
|
|
|
+from future_builtins import map, zip
|
|
from itertools import starmap
|
|
from itertools import starmap
|
|
|
|
|
|
from celery._state import get_current_worker_task
|
|
from celery._state import get_current_worker_task
|
|
@@ -72,7 +73,8 @@ def add_unlock_chord_task(app):
|
|
@app.task(name='celery.chord_unlock', max_retries=None)
|
|
@app.task(name='celery.chord_unlock', max_retries=None)
|
|
def unlock_chord(group_id, callback, interval=1, propagate=False,
|
|
def unlock_chord(group_id, callback, interval=1, propagate=False,
|
|
max_retries=None, result=None):
|
|
max_retries=None, result=None):
|
|
- result = _res.GroupResult(group_id, map(_res.AsyncResult, result))
|
|
|
|
|
|
+ AR = _res.AsyncResult
|
|
|
|
+ result = _res.GroupResult(group_id, [AR(r) for r in result])
|
|
j = result.join_native if result.supports_native_join else result.join
|
|
j = result.join_native if result.supports_native_join else result.join
|
|
if result.ready():
|
|
if result.ready():
|
|
subtask(callback).delay(j(propagate=propagate))
|
|
subtask(callback).delay(j(propagate=propagate))
|
|
@@ -155,9 +157,8 @@ def add_group_task(app):
|
|
tid = opts['task_id'] = uuid()
|
|
tid = opts['task_id'] = uuid()
|
|
return task, self.AsyncResult(tid)
|
|
return task, self.AsyncResult(tid)
|
|
|
|
|
|
- tasks, results = zip(*[prepare_member(task) for task in tasks])
|
|
|
|
- return (tasks, self.app.GroupResult(group_id, results),
|
|
|
|
- group_id, args)
|
|
|
|
|
|
+ tasks, res = list(zip(*[prepare_member(task) for task in tasks]))
|
|
|
|
+ return (tasks, self.app.GroupResult(group_id, res), group_id, args)
|
|
|
|
|
|
def apply_async(self, partial_args=(), kwargs={}, **options):
|
|
def apply_async(self, partial_args=(), kwargs={}, **options):
|
|
if self.app.conf.CELERY_ALWAYS_EAGER:
|
|
if self.app.conf.CELERY_ALWAYS_EAGER:
|
|
@@ -270,7 +271,7 @@ def add_chord_task(app):
|
|
|
|
|
|
# - convert back to group if serialized
|
|
# - convert back to group if serialized
|
|
if not isinstance(header, group):
|
|
if not isinstance(header, group):
|
|
- header = group(map(maybe_subtask, header))
|
|
|
|
|
|
+ header = group([maybe_subtask(t) for t in header])
|
|
# - eager applies the group inline
|
|
# - eager applies the group inline
|
|
if eager:
|
|
if eager:
|
|
return header.apply(args=partial_args, task_id=group_id)
|
|
return header.apply(args=partial_args, task_id=group_id)
|