在我django-notification
用来发送通知的 django 应用程序中。但是我注意到在某些情况下(发送多个通知时)我的 Web 应用程序会延迟响应。尽管我通过 Ajax 请求发送通知,但我仍然认为最好实现mailtools
提供线程电子邮件的库。
有没有人实施过这样的事情?这简单吗?我如何使用ThreadedMailer
from mailtools
in django-notification
?
或者,还有其他选择吗?
在我django-notification
用来发送通知的 django 应用程序中。但是我注意到在某些情况下(发送多个通知时)我的 Web 应用程序会延迟响应。尽管我通过 Ajax 请求发送通知,但我仍然认为最好实现mailtools
提供线程电子邮件的库。
有没有人实施过这样的事情?这简单吗?我如何使用ThreadedMailer
from mailtools
in django-notification
?
或者,还有其他选择吗?
为此目的使用芹菜。使用 django 很容易设置,您可以使用您现在正在使用的代码。
ajax 请求将电子邮件放入任务队列并返回。如果您想稍后检查任务是否成功,您可以返回您的任务 ID。
更新:
Celery 只允许你在后台调用你的函数。在你调用的 ajax 视图中说:
send_email(…)
现在tasks.py
你应该定义函数:
@task
def send_email(…)
在视图中,您将通过以下方式调用它:
send_email.delay(…)
就是这样。该电子邮件将由后台工作程序守护程序使用您现有的 python 代码发送。
这不会django-notification
过时。Celery 做了完全不同的事情,可以与你能想象到的任何库一起使用。
唯一的变化是任务参数必须是可选的。这意味着您必须传递数据库 ID,而不是整个对象等。