Почему celery не запускает код и как это исправить?
Я разрабатываю api на django, для этого api мне нужно использовать celery для выполнения отложенных действий. В конечном итоге, целью будет удаление данных из базы данных после определенного периода бездействия. Я настроил celery и Rabbitmq, но когда я пытаюсь выполнить что-то с помощью print to try, ничего не происходит.
Вот как я настраиваю сельдерей в settings.py:
#celery settings
import ssl
CELERY_BROKER_URL = 'amqps://guest:guest@localhost:5671/'
CELERY_BROKER_USE_SSL = {
'ca_certs': '/etc/rabbitmq/cacert.crt',
'keyfile': '/etc/rabbitmq/key.pem',
'certfile': '/etc/rabbitmq/cert.crt',
'cert_reqs': ssl.CERT_REQUIRED
}
CELERY_RESULT_BACKEND = "rpc://"
Вот код, который я пытаюсь запустить:
from __future__ import absolute_import, unicode_literals
from celery import shared_task
from django.utils import timezone
from datetime import timedelta
#DELAY_FOR_DATA_DELETION = timedelta(days=30) # 30 jours par exemple
@shared_task
def delete_user():
print("test")
return
Вот как я вызываю функцию:
delete_user.apply_async(countdown=5)
и вот как я настроил файл celery.py:
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'base.settings')
app = Celery('base', broker="amqps://guest:guest@localhost:5671/")
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Я пытался выполнить команду "celery status", чтобы увидеть статус рабочего, но получил эту ошибку
и я попытался посмотреть на журналы rabbitmq, где видно, что есть соединение, когда я делаю delete_user.apply_async(countdown=5)
:
2024-04-30 14:30:55.853808+00:00 [info] <0.716.0> accepting AMQP connection <0.716.0> (127.0.0.1:34092 -> 127.0.0.1:5671)
2024-04-30 14:30:55.856889+00:00 [info] <0.716.0> connection <0.716.0> (127.0.0.1:34092 -> 127.0.0.1:5671): user 'guest' authenticated and granted access to vhost '/'