0

本番環境でdjango-celery 2.4.2を使用してdjango 1.3を実行しています。

django settings.py ファイルで django ロギングを有効にしたため、セロリ デーモン (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 = ...
4

1 に答える 1

2

celeryd はルート ロガーをハイジャックして構成するため、競合が発生する可能性があります。

次のコマンドを使用して、Celery ログの乗っ取りを無効にしてみてください。

CELERYD_HIJACK_ROOT_LOGGER=False
于 2012-02-23T05:52:50.280 に答える