Django:在后台发送电子邮件的最佳方式?

use*_*003 6 django multithreading background-process

我正在从Django发送电子邮件(使用Webfaction).但是,这很慢,所以我想在后台发送电子邮件,即使电子邮件尚未发送,也会向用户返回回复.

有什么想法是最好的方法吗?

我读过有关芹菜的文章,但似乎有很多步骤可以设置它:http://markliu.me/2011/sep/29/django-celery-on-webfaction-using-rabbitmq/那没关系,但是我我想知道这是尝试之前要走的路.

线程怎么样?http://www.artfulcode.net/articles/threading-django/

还是cron的工作?http://docs.webfaction.com/software/general.html

您有其他经验的人吗?

Rus*_*tem 6

让我们简单概述一下可能的解决方案:

  1. 线程是糟糕的解决方案 - 因为它们仅在您的响应未发送之前才处于活动状态。

  2. Celery - 是标准方式,很容易添加到 django (只需查看有关 django-celery 的大量教程之一,对于使用数据库作为代理的任务就足够了)

  3. Cron 作业 - 并不是真正好的程序员方式,因为您的代码将存储在您的存储库和系统 crontab 中。所以每次你都应该考虑一下。

  4. 另一种方法是使用 Eventlet 或 Gevent 之类的东西。绿色线程将在空闲状态下工作,并且对于您的标准任务 - 很容易添加。缺点: - 你应该了解很多有关greenlet的知识,你应该小心greenlet中的错误捕获。

我建议使用 Celery,因为现在添加它很容易,有很多教程和文档。而且它很容易随着您的应用程序一起成长。