1

我想在一个视图中发送多封电子邮件。我需要的是,该视图将响应发回并在后台发送电子邮件。

当我跑步时

return EmailMultiAlternatives(subject,
                             t,
                             sender,
                             recipients,
                             bcc=bcc).send()

视图在发送一两封电子邮件或其他任何内容之前不会发送响应。

我想问为什么

    yield EmailMultiAlternatives(subject,
                             t,
                             sender,
                             recipients,
                             bcc=bcc).send()

指令不发送我的电子邮件??为什么 yield 的行为不像我想要的那样?

4

1 回答 1

1

Django 框架(与TornadoTwisted不同)在同步/阻塞模式下工作,视图在完成所有操作之前不会返回响应。

如果你不想等待发送电子邮件,你应该看看celerydjango-celery包。定义一个任务,将它放在视图中的队列中,返回响应并让工作人员“在后台”完成工作。

另见:

希望有帮助。

于 2013-08-02T12:53:51.990 回答