Django 和 Gunicorn 的异步任务

Async Tasks for Django and Gunicorn

我有一个用例,我必须 send_email 在我的视图中向用户展示。现在提交表单的用户在发送电子邮件之前不会收到 HTTP 响应。我不想让用户在 send_mail 上等待。所以我想异步发送邮件而不关心电子邮件错误。我正在使用 celery 发送邮件异步,但我已经读到它对于像这样的简单任务来说可能有点矫枉过正。如何在不使用 celery

的情况下完成上述任务

我假设您不想等待,因为您正在使用外部服务(超出您的控制)发送电子邮件。如果是这种情况,则将本地 SMTP 服务器设置为中继。 Amazon SES、SendGrid、Mandrill/Mailchimp 等许多服务都有关于如何操作的说明。应用程序只需等待交付到本地主机(这应该很快并且在您的控制范围内)。最终交付将异步转发到 request/response。 STMP 服务器已经构建为通过重试来处理传送失败,这是您迁移到 Celery 后可能获得的好处。