2

我正在使用 GAE 开发一个投票应用程序,其中包括向每个选民发送电子邮件。在我最初的测试中,我超过了每分钟的电子邮件配额,并引发了这个异常:

OverQuotaError: The API call mail.Send() required more quota than is available.

我能够通过启用计费来解决这个短期问题,这大大增加了每分钟的电子邮件配额,但是防止将来引发此类异常的正确方法是什么?如果我的应用程序非常成功并且我超过了更大的配额,那么引发此异常将是一个大问题。

我不想尝试发送电子邮件,除了阻止,因为这是在处理表单后完成的,我不希望用户等待对 POST 的响应。

这是任务队列的好用例吗?如果是这样,我会在任务队列中请求发送一批电子邮件,还是每个发送电子邮件的请求都会进入任务队列?前者似乎更好,因为处理 POST 会更快。无论我采用哪种方式,我是否会在发送每封电子邮件之间添加延迟以确保它们不会被快速发送并且我会超出配额?

4

2 回答 2

3

是的,非常适合任务队列,因为您可以通过更改 queue.yaml 中的属性来限制发送电子邮件的速率

每个任务一封电子邮件是最好的,所以如果任务失败并重试,它只会重试失败的一个,而不是所有批次

于 2011-03-08T23:24:02.750 回答
0

是的。使用任务队列。如果一个任务正在发送电子邮件,您可以决定每分钟应该运行多少个任务。如果任务失败,它将重试执行。

于 2011-03-09T03:44:34.670 回答