在线程中的任意位置获取当前 celery 任务 id

Posted

技术标签:

【中文标题】在线程中的任意位置获取当前 celery 任务 id【英文标题】:Get current celery task id anywhere in the thread 【发布时间】:2013-12-09 00:42:17 【问题描述】:

我想在正在运行的任务中获取任务 ID, 不知道我在做什么任务。 (这就是为什么我不能使用https://***.com/a/8096086/245024)

我希望它是这样的:

@task
def my_task():
    foo()

def foo():
    logger.log(current_task_id)

这种模式在许多不同的任务中返回,我不想将任务上下文带到每个内部方法调用中。

一种选择是使用线程本地存储,但是我需要在任务开始之前对其进行初始化,并在完成后对其进行清理。

还有更简单的吗?

【问题讨论】:

你不能用'from celery import current_task; current_task.request.id` ? 这正是我想要的。谢谢! 【参考方案1】:
from celery import current_task
print current_task.request.id

我只是从评论中复制这个,因为它应该是一个答案,所以感谢@asksol。

【讨论】:

以上是关于在线程中的任意位置获取当前 celery 任务 id的主要内容,如果未能解决你的问题,请参考以下文章

如何在获取celery中的任务执行情况

Celery在Django中的使用介绍

Celery 检查工作任务并检索任务文档字符串

php怎么调用celery任务

删除 celery / rabbitmq 中的所有待处理任务

获取使用 celery chord 创建的所有任务的 task_ids