gpt4 book ai didi

python - celery 。获取当前链的id

转载 作者:行者123 更新时间:2023-12-02 00:55:11 24 4
gpt4 key购买 nike

基于 get id for current task .

我这样调用链:

chain = (nice_task.s(a=1) |
task2.s(a=2)).apply_async()

任务定义为:

@celery.task(bind=True)
def nice_task(self, a):
print a
print self.request.id # None
return a

如何获取链内任务的id?

我尝试打开/关闭 CELERY_ALWAYS_EAGER - 但没有效果。

UPD self.request 也有空的 context

最佳答案

调用链将调用其中的任务并返回链中最后一个任务的结果

当你像这样调用链时

chain = (nice_task.s(a=1) | task2.s(a=2)).apply_async()

它正在返回 task2 的结果。您可以通过检查 chain.info

来验证这一点
In [25]: chain.info
Out[25]: 'task2'

In [26]: chain.id
Out[26]: 'bec26eff-2dfe-4203-aed2-a122d908c905'

要访问上一个任务,您需要使用.parent 属性。 chain.parent 给你之前的任务,你可以从 .id 中获取 id。

In [27]: chain.parent
Out[27]: <AsyncResult: 242d338b-35fe-4f16-be07-36d0d8f2bb53>

In [28]: chain.parent.info
Out[28]: 'task1'

In [29]: chain.parent.id
Out[29]: '242d338b-35fe-4f16-be07-36d0d8f2bb53'

关于python - celery 。获取当前链的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com