Я пытаюсь отправить электронную почту и ниже работает отлично, если выполняется через веб-сервер. Однако, когда я пытаюсь отправить задачу в Celery, я всегда получаю сообщение об ошибке Assertion Error, говорящее мне, что «to» должен быть списком или кортежем.Ошибка отправки электронной почты с помощью Django с Celery
Я не хочу, чтобы электронные письма отправлялись через веб-сервер, так как это замедлит работу, поэтому, если кто-нибудь может помочь мне исправить это, это было бы весьма признательно.
from celery import Celery
from django.core.mail import send_mail, EmailMessage
app = Celery('tasks', backend='amqp', broker='amqp://')
@app.task
def send_mail_link():
subject = 'Thanks'
message = 'body'
recipients = ['[email protected]']
email = EmailMessage(subject=subject, body=message, from_email='[email protected]', to=recipients)
email.send()
Это не работает в производстве. Сельдерей возвращается с ошибкой. 'ContentDisallowed: отказ от десериализации недоверенного содержимого типа pickle (application/x-python-serialize)'. Мне нужно остановиться !!!! –
Используйте '@ app.task (serializer = 'json')' вместо этого. Ознакомьтесь с http://celery.readthedocs.org/en/latest/userguide/calling.html#calling-serializers для получения дополнительной информации о сериализаторах и почему рассол не поддерживается по умолчанию. – mjec