Python 以编程方式防止耗尽分配的Google应用程序引擎配额

Python 以编程方式防止耗尽分配的Google应用程序引擎配额,python,google-app-engine,gae-quotas,Python,Google App Engine,Gae Quotas,我正在使用python开发一个gae应用程序。该应用程序涉及一些众包数据收集系统,应用程序中使用的数据由全国各地的用户提交。现在,我使用默认配额(免费),但我面临的问题是确保我的应用程序至少有99%的运行时间 挑战在于,一旦你耗尽分配的配额,谷歌就会阻止任何进一步的请求路由到你的应用程序,在最近的一次测试狂潮中,一个人能够构建一个自动发布脚本,该脚本很快就耗尽了CPU配额——之后,该应用程序将仅为请求提供HTTP 403禁止状态代码,而不是调用请求处理程序。现在,我已经修补了系统,不允许自动发布

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

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

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


有什么建议吗?

这个问题的一个常见解决方案是将任务委托给一个速率有限的代理

例如:

queue:
- name: mail-throttle
  rate: 2000/d
  bucket_size: 10
- name: background-processing-throttle
  rate: 5/s
通过这种方式,您可以控制应用程序所有部分的使用,迫使它们保持在可用配额的范围内

几点注意事项:
1.队列提供尽力而为的FIFO订单

2.排队/执行一项任务的次数计入数

谢谢,我不知道taskqueue,我只是想知道这项服务使用的资源是否仍然会被路由到我的“账单”(好吧,即使我使用免费配额安排)。@mcnemesis:任务队列中的任务仍然计入您的配额。他们只是(除其他外)让你限制你执行资源密集型任务的速度。@shang:事实上,正是速度的限制引发了我最初的担忧。关于配额的使用,我仍然任由我的用户摆布:-/@mcn您无能为力,@sys true,我希望清空IPV4存储桶将使IPV6能够挽救这一天--事情可能会改变。如果您在那一分钟超过配额,您会向用户显示什么而不是错误消息?还是你的计划只是让每一个请求花费的时间越来越长,离配额越近?注册计费。设置一个每日计费限额,该限额足以满足您期望获得的流量。@Nick该应用程序是非商业性的(这是一个社区援助项目),因此目前正在进行计费交易。@mcn我很高兴它有所帮助。噢,@Nick的推荐很好;您可以启用计费定义每天0美元的预算。这样,你就可以不用花一分钱就获得计费的所有好处(配额限制被荒谬地释放了)。@mcnemesis@systempuntoo但更不用说,你可以用相对较少的钱获得大量配额。为了提供社区服务,我花了一些钱购买了一些应用程序。