Celery beat отправляет причитающиеся задания, но задания не выполняются
Постановка задачи: Селерейный бит отправляет запланированное задание вовремя. Но рабочий не может получить задание и выполнить его.
Я использую следующую версию celery
django-celery-beat==2.2.0
celery==4.4.0
django-celery==3.3.0
Команда используется для celery-beat
celery -A project_path.dev beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler
Команда используется для celery-worker
celery worker -A project_path.dev --pool=solo -Q celery -l info
task.py
@periodic_task(run_every=(crontab(minute='*/30')),
options={'queue': settings.CELERY_QUEUES_DICT["celery-periodic"]})
def celery_task():
print("Executing Task")
журналыcelery-beat:
[2022-07-03 23:00:00,501: INFO/MainProcess] Scheduler: Sending due task path.to.celery_task (path.to.celery_task)
celery-dev logs:
[tasks]
. path.to.celery_task
Я вижу, что пара других задач не выполняется. Могу ли я получить помощь, чтобы разобраться в проблеме?
Ваша команда worker -Q celery
указала, что worker обрабатывает только задания в очереди celery. Но очередь в вашей постановке задачи - settings.CELERY_QUEUES_DICT["celery-periodic"]
. Вам следует проверить, указывают ли они на одну и ту же очередь
Нашел проблему. В упомянутой очереди было около 120k ожидающих обработки сообщений. Отсюда и возникла эта проблема.
print не работает в celery, вы должны использовать:
logger.info("Executing Task")
вместо:
print("Executing Task")