1
У меня есть рабочая цепочка, но когда я добавляю apply_async()
, она выполняет только первую задачу.Почему сельдерей выполняет только первую задачу в цепочке?
@task(name='run_a', delay=True)
def run_a(**kwargs):
do_whatever(kwarg['var'])
return
@task(name='run_b', delay=True)
def run_b(**kwargs):
# ...
return
@task(name='run_c', delay=True)
def run_c(**kwargs):
# ...
return
С командой цепи:
ret = chain(
run_a.s(**kwargs),
run_b.s(**kwargs),
run_b.s(**kwargs)
).apply_async()
- Без
apply_async
все это работает (синхронно), как ожидалось. - 'kwargs' - это дикт.
Может кто-нибудь подтвердить, что это связано с использованием в kwargs Сыроватского? http://stackoverflow.com/questions/14968265/celery-task-chain-and-accessing-kwargs – GerardJP
Когда вы попадаете в 'run_b', я получаю typeError в журнале Celery Worker:' TypeError: run_b() принимает ровно 0 аргументов (8 данных) ' – GerardJP