Problem running Celery in ubuntu 18.04 with Supervisor and Django

Viewed 573

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
0 Answers
Related