Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:异步发送电子邮件_Django_Email_Asynchronous - Fatal编程技术网

Django:异步发送电子邮件

Django:异步发送电子邮件,django,email,asynchronous,Django,Email,Asynchronous,我有一个Django应用程序,它有一个表单来订购东西。提交表格后,应将您转发至确认网站,同时还应发送两封电子邮件 用Django发送电子邮件不是问题 send_mail(subject, plain_message, from_email, [order.customer.email], html_message=html_message) 但这似乎不是以异步方式发生的,因为这需要一些时间 我只想调用我的send_email方法,让发送异步处理,然后继续转发 我将如何实现这一点,我有什么样的可

我有一个Django应用程序,它有一个表单来订购东西。提交表格后,应将您转发至确认网站,同时还应发送两封电子邮件

用Django发送电子邮件不是问题

send_mail(subject, plain_message, from_email, [order.customer.email], html_message=html_message)
但这似乎不是以异步方式发生的,因为这需要一些时间

我只想调用我的
send_email
方法,让发送异步处理,然后继续转发


我将如何实现这一点,我有什么样的可能性?我对Django/Python相当陌生,但我想象创建一个线程或类似的东西?对于这种情况,最佳做法是什么?

如评论中所建议的,您需要实现任务队列和工作队列。在我的项目中,我使用django rq和Redis

见此处的回购协议:

然后,您可以将send_mail功能推入队列,如示例所示:

导入django\u rq
#在这里处理东西
#将要发送的电子邮件排队
django_rq.enqueue(发送邮件、主题、普通消息、来自电子邮件[order.customer.email],html_message=html_message)

但请确保您还需要一名工作人员在后台实际处理队列中的项目。

标准做法是使用任务运行程序。芹菜可能是最受欢迎的。