python - 谷歌应用引擎锁定

标签 python google-app-engine

只是想知道你们中是否有人遇到过这种情况。我正在使用 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/

相关文章:

google-app-engine - 来自 Intuit IPP 的请求 token 请求被拒绝

python - 使用 Google App Engine 显示 Rss/Atom 提要

java - 将 Google 应用引擎导出为 WAR/EAR

javascript - 使用 Python 在后台使用 Thread 运行 javascript

python - 以编程方式将图像保存到 Django ImageField 会创建图像的无限循环

python - 如何在 PDF 的底部(页脚)添加多行?

google-app-engine - Appengine API 调用 : Application restrictions: HTTP referrers (websites) or IP addresses (web servers, cron 作业等)

php - 如何解决从 App Engine 生成的 'Request was aborted after waiting too long to attempt to service your request error'

python - Python 字典错误 : str object has no attribute append

python - 在 pandas 交叉表中合并计数和百分比(标准化)