【发布时间】:2019-11-26 04:09:36
【问题描述】:
一个 Celery 任务队列,用于计算 (2 + 2) - 3 的结果。
@app.task()
def add(**kwargs):
time.sleep(5)
x, y = kwargs['add'][0], kwargs['add'][1]
return x + y
@app.task()
def sub(**kwargs):
time.sleep(5)
x = args[0]
y = kwargs['sub'][0]
return x - y
示例任务数据 = kwargs = {'add' : (2, 2), 'sub' : (3)}
链接任务:result = (add.s() | sub.s()).apply_async(kwargs = kwargs)
As per design, apply_async 仅将 kwargs 应用于链中的第一个任务。我需要改变什么才能达到预期的结果?
【问题讨论】:
-
链接任务将应用其父任务的结果作为第一个参数,因此您可以修改
return以包含kwargs -
实际上,任务将执行非常不同的事情。例如 - task1 - 打开浏览器到
url。 task2 - 将data发送到特定的input字段。你可以看到从task1返回东西不是一个好的设计。 -
有人可以帮忙吗?
标签: python celery celery-task