【问题标题】:Django logging breaks the celery daemonDjango 日志记录破坏了 celery 守护进程
【发布时间】:2012-01-05 09:58:52
【问题描述】:

我在生产环境中运行 django 1.3 和 django-celery 2.4.2。

由于我在 django settings.py 文件中激活了 django 日志记录,因此 celery 守护进程 (celeryd) 将不再运行。 删除日志记录功能可以解决问题。

我在 settings.py 中的日志代码如下所示:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
        },
    },
    'handlers': {
        'write_to_log': {
            'level':'WARNING',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': '/path/to/project/logs/errors.log',
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['write_to_log'],
            'level': 'WARNING',
            'propagate': True
        }
    }
}

编辑: 我在 LOGGING 字典之前添加了以下代码,它解决了这个问题。如果有人有更干净的解决方案,我想听听。

import sys
if not "celeryd" in sys.argv:
    LOGGING = ...

【问题讨论】:

  • 定义“芹菜守护进程 (celeryd) 不再运行”。当你尝试运行它时会发生什么?

标签: django celery django-celery


【解决方案1】:

celeryd 劫持并配置根记录器,因此可能存在冲突。

尝试通过以下方式禁用 Celery 日志劫持:

CELERYD_HIJACK_ROOT_LOGGER=False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 2018-06-11
    • 2015-02-28
    • 1970-01-01
    • 2012-10-22
    • 2014-11-24
    • 2017-06-11
    • 2020-11-11
    相关资源
    最近更新 更多