Настройка логирования Django + Celery на Heroku

TLDR; Я развернул приложение django + celery на heroku, но я не могу увидеть журналы Celery в журналах heroku.

django==5.0.1

celery==5.3.4

Вот соответствующие файлы

Procfile

web: daphne ecom_proj.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: celery -A ecom_proj.celery_app worker -E -B --loglevel=INFO

settings.py

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "base": {
            "()": "django.utils.log.ServerFormatter",
            "format": "[{server_time}] {name} {levelname} {module} {message}",
            "style": "{",
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "formatter": "base",
            "level": "INFO",
        },
    },
    "loggers": {
        "": {
            "handlers": ["console"],
            "level": "INFO",
        },
        "django": {
            "handlers": ["console"],
            "level": "INFO",
            "propagate": False,
        },
        "celery": {
            "handlers": ["console"],
            "level": "INFO",
            "propagate": False,
        },
    },
}

celery.py

import os
from celery import Celery

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ecom_proj.settings")
celery_app = Celery("ecom_proj_celery")
celery_app.autodiscover_tasks()

myapp/tasks.py

import logging
from celery import shared_task

logger = logging.getLogger(__name__)

@shared_task
def my_task():
    logger.info("task has started")
    # Do something....

Со всеми этими файлами я развернул проект django на heroku и смог увидеть сообщения журнала процесса web, однако для процесса worker (Celery) я не могу увидеть никаких журналов, которые находятся в функциях задачи.

Я просмотрел различные вопросы SOF, и большинство из них устарели и основаны на django-heroku , который уже устарел.

Я также использовал сигналы сельдерея, такие как worker_process_init, beat_init и setup_logging, ниже приведен код. Я также пытался установить CELERY_WORKER_HIJACK_ROOT_LOGGER = False.

Я пробовал различные комбинации этих подходов, но ни один из них, похоже, не работает. Не уверен, что именно я упускаю. Буду очень признателен, если кто-нибудь поделится рабочей конфигурацией на этих версиях django и celery или укажет мне на правильный ресурс.

Вернуться на верх