Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用谷歌云执行长时间运行的任务_Python_Google App Engine_Google Cloud Platform_Google Compute Engine_Google Cloud Run - Fatal编程技术网

Python 使用谷歌云执行长时间运行的任务

Python 使用谷歌云执行长时间运行的任务,python,google-app-engine,google-cloud-platform,google-compute-engine,google-cloud-run,Python,Google App Engine,Google Cloud Platform,Google Compute Engine,Google Cloud Run,我使用谷歌云已经有几个星期了,由于我有限的GCP知识,我面临着一个大问题 我有一个python项目,其目标是使用API从网站“刮取”数据。我的项目在执行期间运行数万个请求,可能需要很长时间(几个小时,可能更多) 我的项目中有4个python脚本,都是由bash脚本编排的 执行如下: 第一个脚本检查CSV文件和请求的所有说明,并执行请求,将请求的所有结果保存在CSV文件中 第二个脚本检查先前创建的CSV文件,并重新创建其他CSV指令文件 第一个脚本再次运行,但使用新指令,并再次将结果保存在CSV

我使用谷歌云已经有几个星期了,由于我有限的GCP知识,我面临着一个大问题

我有一个python项目,其目标是使用API从网站“刮取”数据。我的项目在执行期间运行数万个请求,可能需要很长时间(几个小时,可能更多)

我的项目中有4个python脚本,都是由bash脚本编排的

执行如下:

  • 第一个脚本检查CSV文件和请求的所有说明,并执行请求,将请求的所有结果保存在CSV文件中
  • 第二个脚本检查先前创建的CSV文件,并重新创建其他CSV指令文件
  • 第一个脚本再次运行,但使用新指令,并再次将结果保存在CSV文件中
  • 第二个脚本再次检查并再次执行相同操作
  • 。。。等几次
  • 第三个脚本清理数据、删除重复项并创建唯一的CSV文件
  • 第四个脚本将最终CSV文件上载到bucket存储
现在我想了解一下bash脚本,我想每周自动执行一次thos脚本

这里的问题是执行时间。以下是我已经测试过的内容:

Google App Engine:GAE上的请求超时时间限制为10分钟,我的功能可以运行几个小时。GAE在这里不可用

谷歌计算引擎(Google Compute Engine):我的脚本每周最多运行10-15个小时,在这段时间内保持计算引擎正常运行代价太高

如何在云环境中自动化脚本的执行?在不改变代码的情况下,有什么解决方案是我没有想到的


谢谢你

一个简单的方法可以实现这一点,而不需要摆脱现有的bash脚本,它可以协调所有事情:

  • 将bash脚本包含在
  • 在bash脚本的末尾,包括一个
    shutdown
    命令
  • 使用调度实例的启动。您必须对GCE API进行经过身份验证的调用才能访问

  • 这样,您的实例将按计划启动,它将运行启动脚本(这将是您现有的编排脚本),并在完成后关闭。

    一个简单的方法可以实现这一点,而无需删除编排所有内容的现有bash脚本:

  • 将bash脚本包含在
  • 在bash脚本的末尾,包括一个
    shutdown
    命令
  • 使用调度实例的启动。您必须对GCE API进行经过身份验证的调用才能访问

  • 这样,您的实例将按计划启动,它将运行启动脚本(即您现有的编排脚本),并在完成后关闭。

    谢谢,这看起来是一个非常好的方法!启动脚本是在每次启动实例时运行还是在创建实例时运行?我需要一个具有至少32GB RAM的功能强大的实例,如果实例关闭,我会被收费吗?是的,每次启动实例时启动脚本都会运行。CPU和内存的费用将停止。永久性磁盘、静态IP和其他永久性资源仍将产生费用。您可以查看定价页面了解更多详细信息:确保使用错误检查编写正确的bash脚本,并在bash中编写一个
    trap
    ,以便在脚本失败时关闭VM。谢谢,这看起来是一个非常好的方法!启动脚本是在每次启动实例时运行还是在创建实例时运行?我需要一个具有至少32GB RAM的功能强大的实例,如果实例关闭,我会被收费吗?是的,每次启动实例时启动脚本都会运行。CPU和内存的费用将停止。永久性磁盘、静态IP和其他永久性资源仍将产生费用。您可以查看定价页面以了解更多详细信息:确保使用错误检查编写正确的bash脚本,并在bash中编写一个
    trap
    ,以便在脚本失败时关闭VM。您可以并行运行所有指令吗?遗憾的是,不可以,它们必须一个接一个地执行速度令人遗憾,但是,无服务器解决方案是可能的,需要更多的监控,但VM管理更少。云构建出现在脑海中,但它意味着使用每个步骤的python脚本构建一个容器,并在类似yaml的云构建中重新编写编排脚本。您能并行运行所有指令吗?遗憾的是,不能,它们必须一个接一个地执行速度令人遗憾,但无服务器解决方案是可能的,需要更多的监控,但需要更少的VM管理。云构建出现在脑海中,但它意味着使用每个步骤的python脚本构建一个容器,并在类似yaml的云构建中重新编写编排脚本。