【问题标题】:Getting celery task id获取芹菜任务ID
【发布时间】:2019-08-06 14:11:11
【问题描述】:

我做了类似的东西

@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?

【问题讨论】:

    标签: django celery


    【解决方案1】:

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

    @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)
    

    【讨论】:

    • 谢谢。这很奇怪,因为 current_task 在子函数中可用