elasticsearch - 更少的 Celery 任务日志记录
问题描述
我们使用 Celery 来管理 Python Django 应用程序中的任务。
我们还使用 Djangostructlog
来记录 Celery 打印的日志消息。
我们通过 Logstash 将这些消息摄取到 ElasticSearch,并注意到我们收到的绝大多数消息是以下 2 条:
收到的任务:%s
任务 %(name)s[%(id)s] 在 %(runtime)ss 中成功:%(return_value)s
Celery 使用INFO日志记录级别转储它们。
有没有办法将这些消息更改为调试级别?
这样我们仍然可以运行 celery-l INFO
并查看其他INFO消息,但不是这些?
更新
对于第二个日志消息。
快速阅读后:
https://docs.celeryproject.org/en/stable/internals/reference/celery.app.trace.html
https://docs.celeryproject.org/en/latest/_modules/celery/app/trace.html
如果没有太多关于 Celery、Django 和 structlog 的知识,这样的东西会起作用吗?
LOGGING = {
...
'loggers': {
'celery.app.trace': {
'handlers': ['null'],
'propagate': False,
}
...
}
解决方案
我只能忽略这两条消息:
初始化.py
import celery
from unittest import mock
app = celery.Celery()
from celery.app import trace
old_info = trace.info
trace.info = mock.Mock()
class MyTask(celery.Task):
Strategy = '61242484.strategy:my_default'
@app.task(base=MyTask)
def test():
print("123")
test.apply_async()
策略.py
from unittest import mock
from celery.worker.strategy import default
def my_default(*args, **kwargs):
kwargs['info'] = mock.Mock()
return default(*args, **kwargs)
推荐阅读
- javascript - 如何删除带有条件的 Firebase 文档
- java - 流方法在内部进行循环?
- c++ - 转换运算符如何在具有指向另一个节点的指针的节点上工作?
- python - 在 Pandas 中具有向后和向前看状态的 Fillna
- javascript - 我无法重定向到 Node.js API 中的 HTML 页面
- mysql - MySQL Query 获取数据形式 GROUP BY 和具有多个关系表的多个 ORDER BY
- java - JPA:在多态实体中选择 JPQL、eclipselink 和使用多重向下转换的连接继承
- mongodb - 如何在 mongodb 的数组中运行查询
- python - 这是在 Tkinter 中隐藏 IntVar 值的最佳方法
- python-3.x - Selenium 中的警报 Send_keys 功能不起作用