gpt4 book ai didi

django - Celery - 如何获取 shared_task 的任务 ID?

转载 作者:行者123 更新时间:2023-12-05 06:07:27 25 4
gpt4 key购买 nike

我看过类似 this 的问题一打others .但它们似乎都不起作用。

我有一个像这样的 shared_task,它不返回任何东西:

@shared_task
def rename_widget(widget_id, name):
w = Widget.objects.get(id=widget_id)
w.name = name
w.save()

我试过 self.request.idcurrent_task.request.id 但它们都返回了 None。我的 celery 版本是 5.0.4,django 版本是 3.1.1。我正在使用 Rabbitmq 作为信使。

最佳答案

似乎是设置问题,或者您调用任务的方式。在不了解更多上下文的情况下,很难说——也许您需要绑定(bind)方法?我已经草拟了那个解决方案:

任务.py

from celery import shared_task
from demoapp.models import Widget

@shared_task(bind=True)
def rename_widget(self, widget_id, name):
print(self.request.id)
w = Widget.objects.get(id=widget_id)
w.name = name
w.save()

views.py 或其他地方:

from tasks import rename_widget

result = rename_widget.delay(1, 'new_name')

如果这不是问题,我会查看完整的 Django 示例设置以获取想法,可在此处找到:https://github.com/celery/celery/tree/master/examples/django/

关于django - Celery - 如何获取 shared_task 的任务 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65420224/

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