我正在尝试构建一个非平凡的GAE应用程序,我不确定是否需要根据GAE的请求超时限制使用cron作业,任务,后端或所有内容的组合有HTTP请求。
我需要做的不同步骤是:
1)我需要超过15,000个站点,我需要定期从中提取数据,而无需任何用户交互。站点总数不会变为静态,但它们都会保存在数据存储区[Table0]中,并沿着它们读取的时间间隔保存。间隔可以每天每隔30天变化一次。
2)对于符合“拉”计划标准的步骤#1中的每个站点,我需要通过HTTP GET从中获取数据(同样,它可能是全部或只有2或3个站点)。从网站获得响应后,解析结果并将此数据保存到数据存储区中[表1]。
3)对于最近在[Table1]中放入数据存储区的所有数据(它们都有一个特殊标志),我需要向第三方站点发出额外的HTTP请求以进行一些额外的处理。一旦我从该站点收到数据,我就会将所有相关信息存储到数据存储区中的另一个表[Table2]中。
4)一旦数据可用并从步骤#3准备就绪,我需要完成所有这些并执行一些额外的转换并更新数据存储区中的原始表[Table1]。
我不确定我需要使用哪些不同的组件来确保我可以完成每项工作,而不会超过GAE网络请求的响应截止日期。对于由cron作业和任务发起的请求,我相信您可以在10分钟内完成它,而典型的用户驱动请求则允许30秒。
答案 0 :(得分:5)
任务队列通常是执行此操作的最佳方式,但您可能需要查看App Engine Pipeline API,它专为您正在讨论的工作流程而设计。
答案 1 :(得分:3)
GAE对于您的用例来说是一个艰难的平台。但是,出于极端的受虐狂,我正在尝试类似的东西。根据我迄今为止的经验,这是我的两分钱:
设计后端任务可能是个好主意,这样如果你有备用的前端CPU周期,可以使用任务队列在“前端”上下文中调度(手动或可能通过查询当前的配额使用情况)。
答案 2 :(得分:0)
在Backends出来之前我放弃了GAE,因此无法对此发表评论。但是,我做了几次是:
所以cron基本上是定期唤醒taskqueue,taskqueue以递归方式运行,直到达到某个停止点。
您可以在我的公共GAE应用中看到它 - https://github.com/mavenn/watchbots-gae-python。