如何禁用芹菜任务结果记录?
Posted
技术标签:
【中文标题】如何禁用芹菜任务结果记录?【英文标题】:How to disable celery task result logging? 【发布时间】:2020-04-03 18:18:45 【问题描述】:我有工作的 Celery 3.1 应用程序,它记录了一些敏感信息。理想情况下,我会拥有相同的日志,但没有 result 部分。
目前看起来是这样的:
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 但我不知道如何实际使用它。
【问题讨论】:
【参考方案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.
【讨论】:
【参考方案2】:您需要覆盖正在发送的成功消息,从那里删除 return_value 格式。 为此,您需要重写 Request 类,如 here 所述。
您还可以覆盖 here 中提到的日志记录配置。
【讨论】:
【参考方案3】:worker_1 | [2019-12-10 13:46:40,052: INFO/MainProcess] 任务 xxxxx 在 13.19569299298746s 成功:yyyyyyy
yyyyyyy 是你的函数返回的结果,删除它只是返回你想要的。 在您的情况下,只有 return 有效
【讨论】:
以上是关于如何禁用芹菜任务结果记录?的主要内容,如果未能解决你的问题,请参考以下文章