我们使用Celery在Python Django应用程序中管理任务。
我们还将Django structlog
用于Celery打印的日志消息。
我们通过Logstash将这些消息提取到ElasticSearch中,并注意到我们收到的绝大多数消息是这些2:
已收到任务:%s
任务%{name)s [%{id)s]在%{runtime} ss中成功:%{return_value)s
Celery以 INFO 日志记录级别转储它们。
有什么方法可以将这些消息更改为 DEBUG 级别?
这样我们仍然可以用-l INFO
运行celery并查看其他 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,
}
...
}
答案 0 :(得分:1)
我只能忽略这两个消息:
初始化 .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()
strategy.py
from unittest import mock
from celery.worker.strategy import default
def my_default(*args, **kwargs):
kwargs['info'] = mock.Mock()
return default(*args, **kwargs)