python - 以编程方式防止分配的 Google App Engine 配额用尽

标签 python google-app-engine gae-quotas

我正在使用 python 开发一个 gae 应用程序。该应用程序涉及一些众包数据收集系统,应用程序中使用的数据由全国各地的用户提交。现在,我使用默认配额(免费),但面临确保我的应用程序至少 99% 正常运行时间的问题。

挑战在于,一旦您用完分配的配额,Google 就会阻止任何进一步的请求路由到您的应用程序,并且在最近的一次测试狂潮中,一个人能够构建一个自动发布脚本,该脚本很快用完了 CPU 配额 - 在那之后,应用程序只会为请求提供 HTTP 403 Forbidden 状态代码,而不是调用请求处理程序。现在,我已经对系统进行了修补,不允许自动发布,但我如何保证人类用户不会在生产时造成类似的“停电”?

我知道配额 API,但我认为它只能为我的应用程序提供分析信息,我想要一种方法来降低请求速率(例如每分钟配额的每分钟)而不提供错误页面或停电。

有什么建议吗?

最佳答案

此问题的一个常见解决方案是将任务委派给速率受限的 taskqueue .

例如:

queue:
- name: mail-throttle
  rate: 2000/d
  bucket_size: 10
- name: background-processing-throttle
  rate: 5/s

通过这种方式,您可以控制应用程序所有部分的使用,强制它们保持在可用配额范围内。

一些注意事项:
1. 队列提供尽力而为的 FIFO 顺序
2. 任务的入队/执行计入多个quotas

关于python - 以编程方式防止分配的 Google App Engine 配额用尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931348/

相关文章:

python - 在 jinja2 模板上使用 CSS 样式表

google-app-engine - Google App Engine 应用程序可能消耗的最大内存是多少?

python - django-simple-history 中 ManyToManyField 的历史

java - Google App Engine (Java) 中当前应用程序的名称

python - 用于一致性和性能的 GAE 实体组/数据建模

java - 如何访问 GAE 上的拉取队列

google-app-engine - 访问数据存储时如何避免 "safety"over quota panic? (已启用计费)

google-app-engine - Google App Engine Memcache API 配额

python - Pyodbc 批量插入语句不会参数化

python - 带有 asyncio 的 UDP 服务器