Celery с rabbitMq и задержкой Django не работает
Я использую celery для отправки почты, и выполнение не происходит в главном потоке из-за высокой нагрузки на него. Хотя я могу отправлять почту, когда я пытаюсь использовать shared_task, функция не выполняется
Когда я проверяю с помощью celery -A myApp worker -l info, я получаю, что задание userEmail получено, но нет вывода, который выполняется.
Что кажется мне странным, следуя документации по celery, так это то, что нет необходимости добавлять какое-либо утверждение в settings.py
Потому что если я проверю, что является конфигурацией для redis (не rabbitMq), есть такие предложения:
CELERY_BACKEND = 'redis://localhost:6379/3'
CELERY_BROKER_URL = 'redis://localhost:6379/4'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/5'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
CELERY_ENABLE_UTC = True
Как сказать сельдерею использовать rabbitMq?
init.py
from .celery import app as celery_app
__all__ = ('celery_app',)
celery.py
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myApp.settings')
app = Celery('myApp')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Затем есть файл utils.py, в котором есть эта функция:
from celery import shared_task
@shared_task(name="userEmail")
def send_user_mail(randomNumber, email):
subject = 'Validation'
body="Your number is: "+str(randomNumber)
send_mail(subject, body ,'xxxxxx.ssmtp@gmail.com', [email],fail_silently = False)
return 1