fix worker recovery and docker logs

This commit is contained in:
qananasikq
2026-04-13 20:46:39 +03:00
parent eaafbd5816
commit c729f971e3
4 changed files with 86 additions and 10 deletions

View File

@@ -1,8 +1,25 @@
# Инициализация Celery-приложения и периодических задач.
from celery import Celery
from celery.signals import worker_process_init, setup_logging as celery_setup_logging
from ..core.config import settings
from ..core.logs import setup_logging
@celery_setup_logging.connect
def _configure_logging(loglevel=None, **kwargs):
# Перехватываем логирование Celery и пишем только в stderr (Docker logs).
level = settings.log_level if settings.log_level else "INFO"
setup_logging(level, None)
@worker_process_init.connect
def _on_worker_process_init(**kwargs):
# Повторно настраиваем логирование в каждом дочернем prefork-процессе,
# чтобы StreamHandler(stderr) корректно работал после fork.
level = settings.log_level if settings.log_level else "INFO"
setup_logging(level, None)
def _broker_url() -> str:
@@ -39,6 +56,8 @@ celery_app.conf.update(
"visibility_timeout": settings.celery.broker_visibility_timeout,
},
result_expires=86400,
worker_redirect_stdouts=False,
worker_hijack_root_logger=False,
beat_schedule={
"periodic-sync-listing": {
"task": "iaai_scraper.worker.tasks.sync_listing_task",