Сельдерей вторая незарегистрированная задача
У меня есть сомнения относительно реализации celery с rabbitMQ, поскольку выполняется только первая функция (debug_task()), которую я определил в celery.py.
Проблема в том, что send_user_mail(randomNumber, email) не работает. debug_task работает, поэтому он зарегистрирован.
Это консоль сельдерея
[2022-10-08 22:28:48,081: ERROR/MainProcess] Получена незарегистрированная задание типа 'callservices.celery.send_proveedor_mail_new_orden'. Сообщение сообщение было проигнорировано и отброшено.
Не забыли ли вы импортировать модуль, содержащий эту задачу? Или может быть вы используете относительный импорт?
Почему он не зарегистрирован?
celery.py
from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
from django.core.mail import EmailMultiAlternatives, send_mail
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'callservices.settings')
app = Celery('tasks',broker='pyamqp://guest@localhost//')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(settings.INSTALLED_APPS)
@app.task()
def debug_task():
print("hi all")
@app.task()
def send_user_mail(randomNumber, email):
subject = 'email validation - ServicesYA'
cuerpo="Your number is: "+str(randomNumber)
send_mail(subject, cuerpo ,'xxx.ssmtp@xxx.com', [email],fail_silently = False)
return 1
Это init.py
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from celery import app as celery_app
__all__ = ('celery_app',)
и в settings.py я добавляю эту строку:
BROKER_URL = "amqp://guest:guest@localhost:5672//"