在我的django应用程序中,我使用django-notification
发送通知。但是我注意到在某些情况下(发送多个通知时)我的Web应用程序正在给出延迟响应。虽然我通过Ajax请求发送通知,但我仍然认为最好能够实现提供线程化电子邮件的mailtools
库。
有没有人实施过这样的事情?这简单吗?如何在ThreadedMailer
中使用mailtools
中的django-notification
?
或者,还有另一种选择吗?
答案 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,而不是整个对象等。