【问题标题】: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 但我不知道如何实际使用它。

【问题讨论】:

    标签: celery django-celery celery-task


    【解决方案1】:

    以防它在不久的将来对任何人有用,我在 Celery 4.4 中发现 Request 类中的 success_msgbeen 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 有效

        【讨论】:

          猜你喜欢
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 2018-12-06
          • 2019-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-15
          相关资源
          最近更新 更多