Ger*_*dJP 5 django celery chain
我有一个工作链,但是当我添加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
Run Code Online (Sandbox Code Playgroud)
使用链命令:
ret = chain(
run_a.s(**kwargs),
run_b.s(**kwargs),
run_b.s(**kwargs)
).apply_async()
Run Code Online (Sandbox Code Playgroud)
apply_async一切都会按预期工作(同步)。Celery 在执行之前会验证您的任务,以便函数能够正常工作*args并且**kwargs符合预期。
# Kwargs was filled, I added an empty args list
args = []
kwargs = {
'some': 'intelligent data',
}
Run Code Online (Sandbox Code Playgroud)
当同时调用这两个函数时,它会按预期工作:
ret = chain(
run_a.s(*args, **kwargs),
run_b.s(*args, **kwargs),
run_b.s(*args, **kwargs)
).apply_async()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |