如何禁用芹菜任务结果记录?

时间:2019-12-10 14:20:37

标签: celery django-celery celery-task

我有一个正在运行的Celery 3.1应用程序,该应用程序记录了一些敏感信息。理想情况下,我将拥有相同的日志,但没有结果部分。

当前看起来像:

worker_1 | [2019-12-10 13:46:40,052: INFO/MainProcess] Task xxxxx succeeded in 13.19569299298746s: yyyyyyy

我想要:

worker_1 | [2019-12-10 13:46:40,052: INFO/MainProcess] Task xxxxx succeeded in 13.19569299298746s

该怎么做?

修改: 看来这可以完成工作:https://docs.celeryproject.org/en/3.1/reference/celery.worker.job.html#celery.worker.job.Request.success_msg,但我不知道如何实际使用它。

3 个答案:

答案 0 :(得分:1)

以防万一它对不久的将来有用,我在Celery 4.4中发现Request类中的success_msg具有been moved to the application tracer

幸运的是,看起来这很容易在Django应用的celery.py中覆盖,如下所示:

from celery.app import trace

trace.LOG_SUCCESS = """\
Task %(name)s[%(id)s] succeeded in %(runtime)ss\
"""

您当然可以将其更改为任意值,这只会删除返回值部分。 Full context here

答案 1 :(得分:0)

您需要覆盖发送的成功消息,从此处删除return_value格式。 为此,您需要覆盖Request类,如here所述。

您还可以按照here所述覆盖日志记录配置。

答案 2 :(得分:0)

worker_1 | [2019-12-10 13:46:40,052: INFO/MainProcess] 任务 xxxxx 在 13.19569299298746s 成功:yyyyyyy

yyyyyyy 是您的函数返回的结果,删除它只需返回您想要的内容。 在您的情况下,只有 return 会起作用