我正在尝试执行以下操作
@shared_task
def task1():
return '1'
@shared_task
def task2(r1):
return '2'
@shared_task
def task3(r2):
return 'done'
@shared_task
def job():
chain = (task1.s() | task2.s() | task3.s() ).apply_async()
chain()
Run Code Online (Sandbox Code Playgroud)
但是我必须明确给出task2和task3论证,否则我会出错。
我该怎么做才能让结果流到下一个任务?
您可以直接将附加参数传递给子任务而无需更改任何内容。
chain = (task1.s() | task2.s(r1) | task3.s(r2) ).apply_async()
Run Code Online (Sandbox Code Playgroud)
这里 task1 不接受任何参数,task2 接受两个参数,第一个是前一个任务的结果,第二个是r1。task3 也一样。
如果您不需要 task2 中 task1 的结果,那么您可以将 task2 的签名设为不可变。
chain = (task1.s() | task2.si(r1) | task3.s(r2) ).apply_async()
Run Code Online (Sandbox Code Playgroud)
这里 task1 不接受任何参数, task2 只接受一个参数r1。Task3 接受两个参数,第一个是前一个任务的结果,第二个是r2
| 归档时间: |
|
| 查看次数: |
3027 次 |
| 最近记录: |