Django的通知。如何使用线程电子邮件发送?

时间:2012-11-26 08:26:55

标签: django django-notification

在我的django应用程序中,我使用django-notification发送通知。但是我注意到在某些情况下(发送多个通知时)我的Web应用程序正在给出延迟响应。虽然我通过Ajax请求发送通知,但我仍然认为最好能够实现提供线程化电子邮件的mailtools库。

有没有人实施过这样的事情?这简单吗?如何在ThreadedMailer中使用mailtools中的django-notification

或者,还有另一种选择吗?

1 个答案:

答案 0 :(得分:2)

为此目的使用Celery。使用django很容易设置,你可以使用你现在使用的代码。

ajax请求将电子邮件放入任务队列并返回。如果要稍后检查任务是否成功,则可以返回任务ID。

<强>更新

Celery只允许您在backgound中调用您的函数。在ajax视图中说你打电话:

send_email(…)

现在在tasks.py你应该定义函数:

@task
def send_email(…)

在视图中,您将通过以下方式调用它:

send_email.delay(…)

就是这样。该电子邮件将由后台工作人员使用您现有的python代码发送。

这不会使django-notification过时。 Celery的功能完全不同,可以与任何你想象的lib一起使用。

唯一的变化是任务参数必须是可选择的。这意味着你必须传递数据库ID,而不是整个对象等。