I've set up Supervisor to run some Celery scheduled tasks, but this tasks are never executed. I don't know if I have a bad configuration or if I am missing something to configure. According to my supervisor status all is ok: sudo supervisorctl status my_app -> my_app RUNNING pid 16757, uptime 0:00:04
What i have
Celery app configuration
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
app = Celery("myproject")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
app.conf.beat_schedule = {
"add-two-numbers": {"task": "myproject.myapp.tasks.add", "schedule": 30.0}
}
Supervisor configuration
[program:my_app_celery]
user=root
directory=/var/www/my_django_app/
command=/var/www/my_django_app/venv/bin/celery -A config beat -l info
autostart=true
autorestart=true
stdout_logfile=/var/log/my_project/celery.log
stderr_logfile=/var/log/my_project/celery.err.log
Supervisor celery log
[2020-07-24 21:40:21,168: INFO/MainProcess] Scheduler: Sending due task add-two-numbers (my_project.my_app.tasks.add)
celery -A config beat -l info
LocalTime -> 2020-07-24 23:06:50
Configuration ->
. broker -> redis://localhost:6379//
. loader -> celery.loaders.app.AppLoader
. scheduler -> celery.beat.PersistentScheduler
. db -> celerybeat-schedule
. logfile -> [stderr]@%INFO
. maxinterval -> 5.00 minutes (300s)
[2020-07-24 23:06:50,796: INFO/MainProcess] beat: Starting...
[2020-07-24 23:06:50,839: INFO/MainProcess] Scheduler: Sending due task add-two-numbers (my_project.my_app.tasks.add)
Celery task
# Some Django app task
from __future__ import absolute_import, unicode_literals
from celery import shared_task
@shared_task
def add(x, y):
return x + y
Django celery setting
CELERY_BROKER_URL='redis://localhost:6379'
CELERY_RESULT_BACKEND = CELERY_BROKER_URL
CELERY_ACCEPT_CONTENT = ["json"]
CELERY_TASK_SERIALIZER = "json"
CELERY_RESULT_SERIALIZER = "json"
CELERY_TASK_TIME_LIMIT = 5 * 60
CELERY_TASK_SOFT_TIME_LIMIT = 60
Environment
Ubuntu 18.04
redis-server v=4.0.9
celery==4.4.6
django==3.0.8
python 3.8