@toobinks

Flask, Celery и RotatingFileHandler — как подружить?

Для инициализации App и Celery вызывается один и тот же код:
# -*- coding: utf-8 -*-
"""Create an application instance."""

from flask.helpers import get_debug_flag

from appdata.app import create_app
from appdata.settings import DevConfig, ProdConfig
from appdata.extensions import celery
from appdata.utils import init_celery

CONFIG = DevConfig if get_debug_flag() else ProdConfig

app = create_app(CONFIG)
init_celery(app, celery)


В Docker
для App
command: /usr/local/bin/gunicorn -w 1 -b :5000 autoapp:app --reload --log-level=info

для Celery
command: celery worker -n worker_order --app=autoapp.celery --loglevel=info

Но в App есть инициализация логера:
def register_logger(app):
    """Register application logger."""
    import os.path
    if not os.path.exists("logs/"):
        os.makedirs("logs/")

    handler = RotatingFileHandler('logs/main.log', maxBytes=10000000, backupCount=5)
    handler.setFormatter(
        logging.Formatter('%(asctime)s - %(name)s:{%(pathname)s:%(lineno)d} - %(levelname)s - %(message)s')
    )
    app.logger.addHandler(handler)

    app.logger.setLevel(logging.INFO)


И это логер сначала инициализируется для App, а затем пытается для Celery и происходит закономерный облом.
Как произвести раздельную инициализацию логера для Celery и писать в тот же хендлер?
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы