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



我有一个web scraper,它从电子商务网站抓取数据,现在,我的数据存储在来自pandas数据框架的BigQuery表中。但这些都是我手工做的。例如,从GCP站点启动VM实例,然后用远程SSH连接本地机器,然后在项目文件夹上打开终端,并运行

$ python main.py

开始刮痧。然后在该过程完成后,我再次手动关闭虚拟机实例。现在,我想把这个任务自动化,它会在每个月的第一天自动启动VM实例,然后抓取电商网站数据,然后当程序完成后,它会自动关闭VM实例。

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

是否有解决方案使这些过程自动化?我对GCP很陌生,如果这是一个非常微不足道的问题,我很抱歉要求解决。

Cloud Functions不适合长时间运行的任务。所以我认为在GCE上设置自动任务是正确的决定。

你可以使用Compute Engine API关闭实例本身。例如,您可以使用gcloud CLI工具使用gcloud compute instances stop $instance[1]命令。

注意
不要忘记设置ServiceAccount具有正确的权限,并将其附加到VM以通过Compute Engine API停止自己。[2]

你也可以使用startup_script[3],这是GCE的特性,可以在VM启动后运行命令。

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

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

引用

[1] gcloud CLI参考
https://cloud.google.com/sdk/gcloud/reference/compute/instances/stop

[2]服务帐户与实例
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. 在Compute Engine中创建VM,安装python并放入python脚本。编辑VM并将其添加为启动脚本命令以启动python脚本。所以每次你重启VM -这个python脚本将运行。
  2. 创建PubSub主题
  3. 在末尾添加python代码,将信息发送到PubSub主题。
  4. 创建启动虚拟机计算引擎的云功能。云功能应该由HTTP触发
  5. 创建关闭虚拟机计算引擎的云功能。云功能应该由你定义的PubSub主题触发。
  6. 创建云调度程序,将触发启动云功能(点4)每月一次或其他。

所以它是这样工作的:在月初,云调度程序将触发云功能启动VM。VM将启动并自动启动脚本,该脚本是您的main.py.当脚本完成后,msg将被发送到PubSub主题。PubSub主题将触发第二个云功能,该功能将停止虚拟机。

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

相关内容

  • 没有找到相关文章

最新更新