首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >减少芹菜任务日志记录

减少芹菜任务日志记录
EN

Stack Overflow用户
提问于 2020-04-21 13:57:36
回答 2查看 1K关注 0票数 1

我们在Python应用程序中使用芹菜来管理任务。

我们还将Django structlog用于芹菜打印的日志消息。

我们通过Logstash将这些消息摄取到ElasticSearch,并注意到我们收到的绝大多数消息是以下2条:

接收任务:%s 任务%(名称)%(Id)在%(运行时)ss:%(return_value)s中成功

芹菜用信息日志记录级别将它们转储。

是否有任何方法将这些消息更改为调试级别?

这样我们仍然可以使用-l INFO运行芹菜并查看其他信息消息,而不是这些消息?

更新

第二次日志留言。

快速阅读后:

不了解芹菜,Django和structlog,类似的东西会起作用吗?

代码语言:javascript
运行
复制
LOGGING = {
...
'loggers': {
        'celery.app.trace': {
          'handlers': ['null'],
          'propagate': False,
         }
...
}
EN

回答 2

Stack Overflow用户

发布于 2020-04-21 14:38:58

我只能忽略这两条信息:

init.py

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
from unittest import mock
from celery.worker.strategy import default


def my_default(*args, **kwargs):
    kwargs['info'] = mock.Mock()
    return default(*args, **kwargs)
票数 1
EN

Stack Overflow用户

发布于 2022-10-15 22:36:13

@安东·波米舍琴科,谢谢你的帮助,这对我非常有用。但是,我在my_default方法中发现了一个错误

在这方面:

代码语言:javascript
运行
复制
def strategy(*args, **kwargs):
    kwargs['info'] = mock.Mock()

    from celery.utils.log import get_task_logger
    logger = get_task_logger(__name__)
    logger.info(f'test: {list(args)}')
    logger.info(f'test: {[type(arg) for arg in list(args)]}')

    return celery.worker.strategy.default(*args, **kwargs)

我明白了:

代码语言:javascript
运行
复制
INFO 2022-10-16 00:19:40,673 celery_app 41 139675281467200 test: [<@task: add_test_iterator of napsedjango at 0x7f08ac73f610>, <@task: add_test_iterator of napsedjango at 0x7f08ac73f610>, <Celery napsedjango at 0x7f08ac73f610>, <Consumer: celery@06d4f16e55fb (running)>]
INFO 2022-10-16 00:19:40,674 celery_app 41 139675281467200 test: [<class 'napsedjango._users.tasks.add_test_iterator'>, <class 'napsedjango._users.tasks.add_test_iterator'>, <class 'celery.app.base.Celery'>, <class 'celery.worker.consumer.consumer.Consumer'>]
CRITICAL 2022-10-16 00:19:40,674 worker 41 139675281467200 Unrecoverable error: TypeError("default() got multiple values for argument 'info'")
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/celery/worker/worker.py", line 203, in start
    self.blueprint.start(self)
  File "/usr/local/lib/python3.10/site-packages/celery/bootsteps.py", line 116, in start
    step.start(parent)
  File "/usr/local/lib/python3.10/site-packages/celery/bootsteps.py", line 365, in start
    return self.obj.start()
  File "/usr/local/lib/python3.10/site-packages/celery/worker/consumer/consumer.py", line 332, in start
    blueprint.start(self)
  File "/usr/local/lib/python3.10/site-packages/celery/bootsteps.py", line 116, in start
    step.start(parent)
  File "/usr/local/lib/python3.10/site-packages/celery/worker/consumer/tasks.py", line 26, in start
    c.update_strategies()
  File "/usr/local/lib/python3.10/site-packages/celery/worker/consumer/consumer.py", line 561, in update_strategies
    self.strategies[name] = task.start_strategy(self.app, self)
  File "/usr/local/lib/python3.10/site-packages/celery/app/task.py", line 412, in start_strategy
    return instantiate(self.Strategy, self, app, consumer, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/celery/utils/imports.py", line 49, in instantiate
    return symbol_by_name(name)(*args, **kwargs)
  File "/app/config/celery_app.py", line 44, in strategy
    return celery.worker.strategy.default(*args, **kwargs)
TypeError: default() got multiple values for argument 'info'

在第1行和第2行(记录器)上,我们可以看到在args中有2次任务。这与celery.worker.strategy.default()的条目不对应。

要解决这个问题:

代码语言:javascript
运行
复制
def strategy(*args, **kwargs):
    kwargs['info'] = mock.Mock()
    return celery.worker.strategy.default(*args[1:], **kwargs)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61345350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档