python - 使用 Google Cloud 执行长时间运行的任务
问题描述
我已经使用 Google CLoud 几个星期了,由于我有限的 GCP 知识,我面临着一个大问题。
我有一个 python 项目,其目标是使用它的 API 从网站“抓取”数据。我的项目在执行期间运行了数万个请求,并且可能需要很长时间(几个小时,也许更多)
我的项目中有 4 个 python 脚本,它们都是由 bash 脚本编排的。
执行如下:
- 第一个脚本检查包含请求的所有指令的 CSV 文件,并执行请求,将请求的所有结果保存在 CSV 文件中
- 第二个脚本检查先前创建的 CSV 文件并重新创建另一个 CSV 指令文件
- 第一个脚本再次运行,但使用新指令并再次将结果保存在 CSV 文件中
- 第二个脚本再次检查并再次执行相同操作...
- ...等等几次
- 第三个脚本清理数据、删除重复项并创建一个唯一的 CSV 文件
- 第四个脚本将最终的 CSV 文件上传到存储桶
现在我想使用那个 bash 脚本,我想自动执行这些脚本。每星期一次。
这里的问题是执行时间。这是我已经测试过的:
Google App Engine : GAE 上的请求超时限制为 10 分钟,我的函数可以运行几个小时。GAE 在这里不可用。
谷歌计算引擎:我的脚本将运行最大。每周 10 到 15 个小时,在这段时间内保持计算引擎的运行成本太高了。
我可以做些什么来在云环境中自动执行我的脚本?在不更改代码的情况下,我没有想到的解决方案是什么?
谢谢
解决方案
无需摆脱现有的编排所有内容的 bash 脚本即可完成此操作的简单方法是:
- 在实例的启动脚本中包含 bash 脚本。
- 在 bash 脚本的末尾,包含一个
shutdown
命令。 - 使用Cloud Scheduler 安排实例的启动。您必须对 GCE API 进行经过身份验证的调用才能启动现有实例。
这样,您的实例将按计划启动,它将运行启动脚本(这将是您现有的编排脚本),并在完成后关闭。
推荐阅读
- c++ - 推力::inner_product 与推力::transform_reduce 寻找向量范数
- excel - 如何抑制由 EPM 加载项触发的 .NET 错误消息
- python - 如何创建相关字段?
- python - Rolling subtraction in pandas
- python - Building a multi-index db
- python - 在循环中执行python异步
- python - In Python: How to use the index number in an if-statement that is nested in a for-loop?
- android - How to translate animation from top?
- image - How to use another library in the tensorflow graph?
- html - HTML Standard for Head layout?