Python/Django:在后台发送电子邮件
想象一下用户在网站上执行操作并通知管理员的情况。 想象一下有 20 名管理员需要通知。通过使用 Django 发送电子邮件的常规方法,用户必须等到所有电子邮件发送完毕才能继续。
如何在单独的进程中发送所有电子邮件,以便用户不必等待?是否可以?
Imagine a situation in which a user performs an action on a website and admins are notified.
Imagine there are 20 admins to notify. By using normal methods for sending emails with Django the user will have to wait until all the emails are sent before being able to proceed.
How can I send all the emails in a separate process so the user doesn't have to wait? Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 celery 作为任务队列和 django-celery-email 这是一个 Django 电子邮件后端,用于将电子邮件发送到 celery 任务。
Use celery as a task queue and django-celery-email which is an Django e-mail backend that dispatches e-mail sending to a celery task.
另一个选择是 django-mailer。它将邮件在数据库表中排队,然后您使用 cron 作业来发送它们。
https://github.com/pinax/django-mailer
Another option is django-mailer. It queues up mail in a database table and then you use a cron job to send them.
https://github.com/pinax/django-mailer
如果我们每次只发送 20 封邮件,线程可能是一个可能的解决方案。对于昂贵的后台任务,请使用 Celery。
这是使用线程的示例:
If we are talking about to send only 20 mails time by time, a thread may be a possible solution. For expensive background tasks use Celery.
This is a sample using thread: