只是想知道你们中是否有人遇到过这种情况。我正在使用 Google App Engine 上的 Python 邮件 API,我创建了一个应用程序,它通过 POST 接受消息正文和地址,在数据存储区中创建一个实体,然后每分钟运行一个 cron 作业,抓取 200 个实体并发送出电子邮件,然后删除实体。
我用 1500 封电子邮件进行了实验,在数据存储中创建了 1500 个实体,并发送了 1500 封电子邮件。然后我查看我的统计数据并看到大约。 45,000 个收件人被用完配额,这怎么可能?
所以我的问题是“通过电子邮件发送的收件人”配额在什么时候才算数?在我创建邮件对象的时候,或者在我实际 send()
的时候?我希望是第二个,但配额似乎显示出不同的东西。我确实在 crons 和任务等之间传递邮件对象。有人有这方面的任何信息吗?
谢谢。
更新:事实证明我实际上发送了 45k 封电子邮件,队列只有 1500 封。似乎一个 cron 作业一直运行到前一个作业完成并使用相同的实体进行计算。所以问题变成了“我如何锁定实体并确保在发送电子邮件之前没有人选择它们”?
再次感谢!
最佳答案
使用任务发送电子邮件。
创建一个将键作为参数的任务,检索该键的存储实体,然后发送电子邮件。
当您的处理程序收到正文和地址时,像现在一样存储它,然后将任务排队以执行发送并将数据存储对象的键传递给该任务,以便它知道要为哪个对象发送电子邮件。
您可能会发现正文和地址足够小,您可以简单地将它们作为参数传递给任务并让任务发送电子邮件,而无需直接在数据存储中存储任何内容。
这还有一个好处,如果您想限制在给定时间内发送的电子邮件数量(配额),您可以设置一个具有该速率的任务队列。
关于python - 谷歌应用引擎锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6109602/