芹菜错误电子邮件:无法接收芹菜电子邮件

时间:2015-09-18 19:30:04

标签: python django email celery

我是一个蟒蛇Django和芹菜初学者,我想在当地设置芹菜。目前,我正在为所有失败任务设置错误电子邮件。我所做的就是这个

将这些代码添加到setting.py

($_.H + $_.L)/2
("1.09538" + "1.09524")/2
(1.095381.09524)/2 # < that would not compute

在tasks.py中添加此内容

CELERY_SEND_TASK_ERROR_EMAILS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
ADMINS = (
    ('test', '...@....com'),
)
EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='...@gmail.com'
EMAIL_HOST_PASSWORD='...'
EMAIL_PORT=587
EMAIL_USE_TLS = True`

3 个答案:

答案 0 :(得分:3)

对于在4.0版之后尝试执行此操作的任何人,CELERY_SEND_TASK_ERROR_EMAILS显然已被删除(source):

  

任务不再发送错误电子邮件。这也删除了对app.mail_admins的支持,以及与发送电子邮件相关的任何功能。

一种可能的解决方案是向任务装饰者添加电子邮件:

def shared_task_email(func):
    """
    Replacement for @shared_task decorator that emails admins if an exception is raised.
    """
    @wraps(func)
    def new_func(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except:
            subject = "Celery task failure"
            message = traceback.format_exc()
            mail_admins(subject, message)
            raise
    return shared_task(new_func)

@shared_task_email # instead of @shared_task
def test_task():
    raise Exception("Test exception raised by celery test_task")

答案 1 :(得分:0)

在settings.py

CELERY_SEND_TASK_ERROR_EMAILS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
ADMINS = (
    ('test', '...@....com'),  # Admins syntax may vary by django version
)
EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='...@gmail.com'
EMAIL_HOST_PASSWORD='...'
EMAIL_PORT=587
EMAIL_USE_TLS = True

然后在celery.py文件中,如果你正在进行配置,那么使用它:

app.conf.update(
    ADMINS = ('test', '...@....com'),
    CELERY_SEND_TASK_ERROR_EMAILS= True,
    ....
    ....
    )

要测试此代码,请在shell中使用以下行检查:

from app_name.celery import app
app.mail_admins('Subject', 'body', fail_silently=False)
  

这必须向您的管理员发送电子邮件。如果这项工作,那么它肯定会在失败的任务上发送电子邮件。

答案 2 :(得分:-1)

解决了,我现在可以收到错误的电子邮件!我只是使用这篇文章中的设置重新组织了setting.py。