我从API中提取天气数据。我写了一个脚本,每15分钟获取一次数据。运行此脚本谷歌的应用引擎的最佳做法是什么?
答案 0 :(得分:2)
假设您不想用其他语言重写脚本(例如,允许使用云功能或Google Apps脚本的JavaScript),问题就是您实际想要对获取的数据执行的操作以及是否已使用App Engine应用程序或VM。
您可以在Python标准环境中使用App Engine应用程序来实现此功能。基本上你会编写一个请求处理程序,它将获取数据并将cron.yaml配置为schedule a cron-job。因此,您的请求处理程序将根据您的计划收到HTTP请求,然后使用fetch()
执行Outbound Request。请参阅doc以了解限制(例如端口限制)。对于此设置,我还建议配置task-queue,以便在任何时候只处理一个请求,并在请求失败时添加(指数?)退避。另请注意,实例之前的默认idle_timeout
为shutdown is 5 minutes (for "basic scaling")。 15分钟是startup fee that is billed for a new instance。由于cron-jobs并不完全以每秒为基础运行,而是在预定时间内略微分布,因此根据您的配置可能会产生额外成本。因此,将基本缩放配置中的idle_timeout
增加到16或17分钟,或者每隔13.5分钟左右安排一次任务可能是有意义的。
如果fetch()
限制不符合您的要求,您可能需要考虑灵活环境或VM。
答案 1 :(得分:0)
我已经完成了你过去在这里提出的问题,提取天气数据(可能来自.gov源码),然后对其进行处理并将其存储在数据库中。
我开始使用python / cron组合,但在失败时跟踪其失败的部分有问题。很多时候应该的数据不可用。
就我而言,我在AWS,因此我使用了Lambda,但Google Cloud Platform的云功能类似。我使用Jenkins使用他们的预定触发器关闭了各个功能,然后跟踪他们的完成以确保它成功完成。如果函数失败,那么我可以在Jenkins中看到该过程的哪个特定部分容易失败。