Для инициализации 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 и писать в тот же хендлер?