如何设置celery链中第一个任务的任务ID?
我有这样的代码
from uuid import uuid4
task_id = uuid4()
(task1.s(args..) | task2.s() | task3.s()).apply_async(task_id=task_id)
现在我想把这个自定义的任务ID设置为第一个任务 task1
的任务ID,但当我尝试从 task1
中用 self.request.id
打印出来时,它却是不同的。
我该如何在这里设置一个自定义的ID呢?
2 个回答
3
就是:
from uuid import uuid4
task_id = uuid4()
(task1.s(args..).set(task_id=task_id) | task2.s() | task3.s()).apply_async()
8
如果你想把任务ID传递给你链中的第一个任务,你应该使用.subtask()
这个方法。这个方法提供的选项比.s()
或.si()
要多。
from celery.utils import uuid
first_task_id = uuid()
(task1.subtask(args=(..), task_id=first_task_id) | task2.s() | task3.s()).apply_async()