首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在实例启动时使用自定义python命令调度GCP VM实例?

如何在实例启动时使用自定义python命令调度GCP VM实例?
EN

Stack Overflow用户
提问于 2021-10-27 09:52:56
回答 2查看 245关注 0票数 0

我有一个从电子商务网站抓取数据的网络刮板,现在,我的数据从熊猫数据帧中存储在BigQuery表中。但这些都是我手动完成的。例如,从GCP站点启动VM实例,然后使用远程SSH连接我的本地计算机,然后在项目文件夹上打开终端并运行

代码语言:javascript
运行
复制
$ python main.py

才能开始抓取。然后,在该过程完成后,我再次手动关闭VM实例。现在,我想要的是自动执行此任务,它将在每个月的第一天自动启动VM实例,然后抓取电子商务站点数据,然后当程序完成时,它将自动关闭VM实例。

我的程序几乎需要40个小时才能完成从电子商务网站获取所有数据。我在寻找云函数,我看到的最大时间限制是540秒。由于我的程序执行时间太长,我不确定Cloud functions是否适用于我的情况。

有什么解决方案可以自动化这些流程吗?我是GCP的新手,如果这是一个非常琐碎的问题来寻求解决方案,我很抱歉。

EN

回答 2

Stack Overflow用户

发布于 2021-10-27 10:45:12

云函数不适合长时间运行的任务。因此,我认为在GCE上设置自动化任务是正确的决定。

您可以使用Compute Engine API关闭实例本身。例如,您可以使用gcloud compute instances stop $instance1这样的命令来使用gcloud CLI工具。

备注

不要忘记设置具有正确权限的ServiceAccount,并将其附加到您的虚拟机以通过计算引擎API.2停止自身。2

您还可以使用startup_script3,这是GCE的特性,可以在VM启动后运行该命令。

因此,您可以像下面这样创建startup_script,它将为您的自动化工作。

  • 步骤1.执行python main.py
  • STEP 2.在步骤1之后执行。gcloud compute instance stop $instance.

参考文献

1个gcloud CLI参考

https://cloud.google.com/sdk/gcloud/reference/compute/instances/stop

2个带实例的ServiceAccount

https://cloud.google.com/compute/docs/access/service-accounts#associating_a_service_account_to_an_instance

3启动脚本

https://cloud.google.com/compute/docs/instances/startup-scripts

票数 1
EN

Stack Overflow用户

发布于 2021-10-27 10:52:45

例如,您可以执行以下架构:

  1. 在计算引擎中创建虚拟机,安装python并放入python脚本。编辑VM并将其添加为启动脚本命令,以启动python脚本。所以每次你要重启VM -这个python脚本都会运行。
  2. 创建PubSub主题。
  3. 在最后部分添加python代码,这将发送信息到PubSub主题。
  4. 创建将启动VM计算引擎的云函数。云函数应由HTTP触发。
  5. 创建将停止VM计算引擎的云函数。云函数应由云调度器主题you defined.
  6. Create PubSub Scheduler触发,该主题将每月触发一次启动云函数(第4点)。

所以它的工作原理是这样的:在月初,云调度器会触发云函数来启动虚拟机。VM将启动并自动启动您的main.py启动脚本。当脚本完成后,消息将被发送到PubSub主题。PubSub topic将触发第二个云函数,停止虚拟机。

下个月也一样。下个月也一样。等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69736432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档