На локальной машине запускались периодические задачи, как начал переносить на сервер, они отвалились. Возможно что-то из-за супервизора. Сам celery работает, асинхронные задачи выполняются, но scheduler не выполняет регулярные задачи, пробовал запускать и отдельным воркером.
Вот скрипт запуска celery: start_celery.sh
#!/bin/bash
source /home/www/proj/core/venv/bin/activate
exec celery -A proj worker -l INFO -f /home/www/proj/core/logs/celery.tmp.log
-B --scheduler django_celery_beat.schedulers:DatabaseScheduler
Вот конфигурация супервизора:
[program:celery]
command=/home/www/proj/core/bin/start_celery.sh
directory=/home/www/proj/core
user=www
process_name=%(program_name)s
numprocs=1
autostart=true
autorestart=true
redirect_stderr=true
Вот функция установки периодических задач, она выполняется при запуске:
@celery_app.on_after_finalize.connect
def setup_periodic_tasks(sender: celery_app, **kwargs):
# Устанавливает регулярные задачи
print("setup_periodic_tasks()")
sender.add_periodic_task(
crontab(hour=10),
remind_notify.s()
)
sender.add_periodic_task(
crontab(minute=1),
check_mailings.s()
)
Но периодические задачи не выполняются, ошибок нет в логах нет, в логах супервизора тоже чисто. При вызове
celery -A proj inspect scheduled
получаю:
-> celery@Fourier: OK
- empty -
1 node online.
Второй день вожусь, не могу понять что не так, видимо упустил какую-то мелочь, может кто-то сталкивался с подобным косяком?