如何从当前运行的Shared Task本身获取celery django中的Task ID?

时间:2018-06-18 18:50:01

标签: django django-views celery

在我的views.py我正在使用芹菜来运行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

现在,我们已经看到task.id中的views.py已经有了task_id。但是,让我们说如果我想从shared_task本身获取任务ID,我该怎么办?目标是从task_addnums本身获取任务ID,以便我可以使用它来传递到其他一些功能。 考虑到第一个参数是self.request.id,我尝试使用self。但它没有奏效。

2 个答案:

答案 0 :(得分:0)

解决。

这个答案是宝石Getting task_id inside a Celery task

您可以function_name.request.id获取任务ID。

答案 1 :(得分:0)

来自celery的

current_task将获得当前任务。代码如下:

from celery import shared_task, current_task

@shared_task
def task_addnums():
    print(current_task.request)
    # do something
    return True