【发布时间】:2020-05-22 18:56:51
【问题描述】:
我希望通过异步发送邮件来加快我网站的加载时间。目前,我的代码如下所示:
def myFunction(content):
result = modify(content)
send_mail('My Subject', result, 'me@example.com')
return render(request, 'page.html', result)
使用Django-Mailer,我发现我可以通过将电子邮件写入数据库而不是立即发送来缩短加载时间,然后让 cron + Django 邮件程序异步处理我数据库中的电子邮件。
但是,我希望我的数据库尽可能远离潜在的敏感信息,并希望避免将通过我的应用程序发送的任何电子邮件写入我的数据库。即使数据只是在短时间内写入,通过自动备份也有可能保存一些内容。
我知道这里是否没有解决方案,但有没有办法异步发送电子邮件无需每次将它们写入数据库?我真的不认为这是可能的,但我理想的希望是如果有办法返回响应,然后发送电子邮件。
def myFunction(content):
result = modify(content)
return render(request, 'page.html', result)
send_mail('My Subject', result, 'me@example.com')
Django-After-Response 似乎是这样做的,但自 2015 年以来一直没有更新。
This answer 和this answer 也提供了潜在的解决方案。
【问题讨论】:
-
有人认为我可以跳过发送电子邮件,但在返回结果后,向发送电子邮件的服务器发送另一个请求(不需要响应)
-
好吧,我解决了我的问题,但我没有回答问题。我从 SMTP 切换到 API,它使我的邮寄时间减少了 90%。
标签: django asynchronous django-mailer