В общем, в начале я запускаю redis-server через wsl, потом перехожу в django проект и так такой код у меня:
celery.py:
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'drugs.settings')
app = Celery('drugs')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
settings.py:
INSTALLED_APPS:[
...
'django_celery_beat',
'django_celery_results',
'wood.apps.WoodConfig',
...
]
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = "django-db"
CELERY_TIMEZONE = 'Europe/Moscow'
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
__init__.py:
from .celery import app as celery_app
__all__ = ('celery_app',)
tasks.py:
from celery import shared_task
@shared_task
def add(x, y):
return x + y
Вот, потом я запускаю с терминалах две команды:
1) celery -A drugs worker -l INFO
2) celery --broker=redis/localhost:6379/0 flower
Далее я создаю таску в python manage.py shell:
from wood.tasks import add
add.delay(2, 3)
В логах появляется такое:"[2023-10-23 22:46:48,054: INFO/MainProcess] Task wood.tasks.add[92704d76-8e58-466c-a5f6-42ee9b38eeda] received
"
Далее я перехожу на сайт flower, и у меня там висит это задание уже минут 10 в статусе: received
Почему она не выполняется? Подскажите, пожалуйста