首页 > 解决方案 > 获取芹菜任务ID

问题描述

我做了类似的东西

@app.task
def some_task()
    logger.info(app.current_task.request.id)
    some_func()

def some_func()
    logger.info(app.current_task.request.id)

所以我在 some_task 中收到了正常的 id,但它在 some_func 中等于 None。我怎样才能获得真正的任务ID?

标签: djangocelery

解决方案


您可以绑定任务并传递请求,而不是依赖全局。

@app.task(bind=True)
def some_task(self)
    logger.info(self.request.id)
    some_func(self.request)

def some_func(celery_request=None)
    # celery_request is optional assuming you're using it elsewhere.
    if celery_request:
        logger.info(celery_request.id)

推荐阅读