【发布时间】:2018-11-27 16:06:14
【问题描述】:
在我的views.py 中,我正在使用 celery 运行tasks.py 中的共享任务。
这是我从views.py 拨打电话的方式
task = task_addnums.delay()
task_id = task.id
tasks.py 看起来像
from celery import shared_task
from celery.result import AsyncResult
@shared_task
def task_addnums():
# print self.request.id
# do something
return True
现在,我们可以看到,我们已经在 views.py 中拥有来自 task.id 的 task_id。但是,假设我想从 shared_task 本身获取任务 ID,我该怎么办?目标是从task_addnums 本身获取任务ID,这样我就可以使用它来传递给其他函数。
我尝试使用 self.request.id 考虑到第一个参数是 self 。但它没有奏效。
【问题讨论】:
-
您无法从
task_addnums获得它——这是一个简单的功能。您需要以某种方式存储该 id - 在缓存中或在上下文中作为参数传递。 -
我怎么能把它作为参数传入。它在调用 delay() 后被分配。你有什么想法@Chiefir
-
你需要展示更多你的视图以及你想要传递task.id的位置
-
我需要从
task_addnums本身内部访问task id。原因是,因为我会将该任务 ID 传递到我从task_addnums()调用的函数中。所以,views.py 中的 task_id 是没用的@Chiefir
标签: django django-views celery