在python / django中异步发送邮件的正确方法是什么?

时间:2015-11-13 18:25:33

标签: python django

他是在python中对函数执行异步调用的正确方法吗?

发起人代码

pool = Pool(processes=4)
                pool.apply_async(send_email, ['CONFIRM', email, auth_token, password, "", first_name])

功能

def send_email(flag, email, auth_token='', password='', shared_by='', name=''):

    try :
            send_mail('Greetings!', 'Hi '+str(name)+'\nThank you for checking us out!'
                            'Please click on the link below to activate your subscription.\n' + confirmation_link +
              '\npassword : ' + password, 'someone@domain.com', [email],
              fail_silently=False)
    except SMTPException as e:
            print e
  

我是否阅读过在线文档?

是的,我有,但严重的是没有多大帮助。所以我来这里寻求帮助。

1 个答案:

答案 0 :(得分:1)

如果你想要在Django中集成异步的东西,你需要一个异步任务队列/作业。如果你必须发送大量邮件,它将阻止Django流量。

  

任务队列管理必须在外部执行的后台工作   通常的HTTP请求 - 响应周期。

     

任务是异步处理的,因为它们未启动   通过HTTP请求或因为它们是长期运行的作业   大大降低了HTTP响应的性能。

有几个任务队列系统可以很好地与Django集成,如 Celery docs)。我建议您阅读本文以了解并选择正确的解决方案:Full Stack Python - Task queues