在App Engine上排队电子邮件

时间:2009-12-25 02:42:54

标签: google-app-engine email queue

我需要以超过App Engine免费电子邮件配额(8封电子邮件/分钟)的速度发送电子邮件。我打算使用TaskQueue对电子邮件进行排队,但我想知道:我是否已经使用了库或Python模块来自动执行此操作?这似乎是某人可能遇到的那种问题。

5 个答案:

答案 0 :(得分:4)

如果这是一个选项,为什么不启用结算?它会将最高速率从8个接收者/分钟跳到5,100个接收者/分钟。

前2000名获奖者每天都是免费的,只要您没有超过每日免费配额,我的理解是它不会花费您任何费用(如果您需要每天向超过2000人发送电子邮件,那么'无论如何都必须启用账单。)

答案 1 :(得分:3)

deferred库专为此类设计而设计。只需使用deferred.defer(message.send),并确保您使用的队列具有适当的执行率。

答案 2 :(得分:1)

只需支付一年的费用便宜而不是设计一种解决方法。

答案 3 :(得分:0)

在我看来,最简单的方法是使用队列,从Amazon SQS开始,每分钟拉出8条记录,每分钟运行一次cron作业。

考虑到它被推入队列,然后被取出,我正在计算出它是一种非常便宜的服务。

见下文,0.000002是2个请求的费率。 (添加和查看)

每分钟8个请求,每小时60分钟,一天24小时。考虑到平均月份的30天,您仍然低于1美元。

0.000002 * 8 * 60 * 24 * 30 = $ 0.6912

这可能不是你想要的,但它应该是一个非常简单的解决方案。

编辑: 看到这里,一个python SQS& S3 Lib(sqs就是你应该寻找的所有东西)。

http://pypi.python.org/pypi/Python-Amazon/0.5

答案 4 :(得分:0)

我对这个问题的任何固定解决方案都不熟悉,但它应该是非常容易解决的问题。将电子邮件写入数据存储表,并使用auto_add_now日期字段记录它们输入的顺序。每分钟运行一次的cron作业将关闭八个最旧的记录,邮寄并删除它们。

当然,如果你能解决这个问题是一种相当通用的方式,那么你可以成为每个拥有一个很好的开源模块解决这个问题的人。