只是想知道你们有没有人碰到过这个。我在googleappengine上玩Python邮件API,我创建了一个应用程序,它通过POST接受消息体和地址,在数据存储中创建一个实体,然后每分钟运行一个cron作业,获取200个实体并发送电子邮件,然后删除这些实体。在
我用1500封电子邮件做了一个实验,在数据存储中创建了1500个实体,发送了1500封电子邮件。然后我查看我的统计数据,发现大约有45000个接收者从配额中被使用,这怎么可能?在
所以我的问题是,“收件人通过电子邮件发送”的配额在哪一点上实际起作用?在我创建邮件对象的时候,还是在我实际send()
它的时候?我本来希望有第二个,但配额似乎显示了一些不同的东西。我确实在cron和tasks之间传递邮件对象,有人知道这方面的信息吗?在
谢谢。在
更新:事实上,我发送的邮件实际上是4.5万封,队列只有1500封。看起来,一个cron作业会一直运行到上一个作业完成并使用相同的实体运行。所以问题就变成了“如何锁定实体,确保没有人在发送电子邮件之前选择它们”?在
再次感谢!在
实例化一个email对象当然不计入“通过电子邮件发送的收件人”配额。与其他appengine服务一样,当您触发RPC时,您使用配额,即调用
send()
。在如果你打算给1500个收件人发邮件,而App Engine说你发了45000封邮件,那么你的代码有一个错误。在
使用任务发送电子邮件。在
创建一个任务,该任务将密钥作为参数,检索该密钥的存储实体,然后发送电子邮件。在
当处理程序接收到正文和地址时,按现在的方式存储,然后将任务排队以执行发送,并将数据存储对象的密钥传递给该任务,以便它知道要为哪个对象发送电子邮件。在
您可能会发现body和address足够小,您可以简单地将它们作为参数传递给任务,并让任务发送电子邮件,而不必直接在数据存储中存储任何内容。在
这还有一个优点,如果你想对在给定时间内发送的电子邮件数量(配额)施加限制,你可以用这个速率设置一个任务队列。在
相关问题 更多 >
编程相关推荐