Как правильно настроить функцию ведения журнала Celery с Django? - PullRequest
0 голосов
/ 03 апреля 2020

Я использую Django и Celery для планирования задачи, но у меня есть проблема с регистратором, потому что он не распространяется должным образом. Как видно из приведенного ниже кода, я настроил модуль Python logging и модуль get_task_logger Celery.

import logging
from celery import Celery
from celery.utils.log import get_task_logger

# Configure logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)

# Create Celery application and Celery logger
app = Celery('capital')
logger = get_task_logger(__name__)


@app.task()
def candle_updated(d, f):

    logging.warning('This is a log')
    logger.info('This is another log')
    return d+f

Я использую расширение django-celery-beat для настройки periodi c задачи из Django админ. Этот модуль хранит расписание в базе данных Django и предоставляет удобный интерфейс администратора для управления периодическими c задачами во время выполнения.

Как рекомендуется в документации Я запускаю рабочий и планировщик следующим образом:

$ celery -A capital beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
celery beat v4.4.0 (cliffs) is starting.
__    -    ... __   -        _
LocalTime -> 2020-04-02 22:33:32
Configuration ->
    . broker -> redis://localhost:6379//
    . loader -> celery.loaders.app.AppLoader
    . scheduler -> django_celery_beat.schedulers.DatabaseScheduler

    . logfile -> [stderr]@%INFO
    . maxinterval -> 5.00 seconds (5s)
[2020-04-02 22:33:32,630: INFO/MainProcess] beat: Starting...
[2020-04-02 22:33:32,631: INFO/MainProcess] Writing entries...
[2020-04-02 22:33:32,710: INFO/MainProcess] Scheduler: Sending due task Candles update (marketsdata.tasks.candle_updated)
[2020-04-02 22:33:32,729: INFO/MainProcess] Writing entries...
[2020-04-02 22:33:38,726: INFO/MainProcess] Scheduler: Sending due task Candles update (marketsdata.tasks.candle_updated)
[2020-04-02 22:33:44,751: INFO/MainProcess] Scheduler: Sending due task Candles update (marketsdata.tasks.candle_updated)

Кажется, все работает нормально. Каждые 6 секунд выводится на консоль (частота задачи periodi c), поэтому кажется, что задача выполняется в фоновом режиме, но я не могу проверить это. И проблема у меня в том, что файл example.log пуст, в чем может быть причина?

1 Ответ

1 голос
/ 03 апреля 2020

Вы также запустили рабочий узел? beat - это просто планировщик, вам также нужно запустить работника

celery -A capital worker -l info
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...