我有类似的东西
from uuid import uuid4
task_id = uuid4()
(task1.s(args..) | task2.s() | task3.s()).apply_async(task_id=task_id)
现在我希望这个自定义task_id成为第一个任务task1
的任务ID,但当我尝试使用task1
<{1}}从self.request.id
进行记录时,它会有所不同
如何在此处设置自定义ID?
答案 0 :(得分:5)
如果您想将task_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()
答案 1 :(得分:1)
只是:
from uuid import uuid4
task_id = uuid4()
(task1.s(args..).set(task_id=task_id) | task2.s() | task3.s()).apply_async()