我有一个从电子商务网站抓取数据的网络刮板,现在,我的数据从熊猫数据帧中存储在BigQuery表中。但这些都是我手动完成的。例如,从GCP站点启动VM实例,然后使用远程SSH连接我的本地计算机,然后在项目文件夹上打开终端并运行
$ python main.py
才能开始抓取。然后,在该过程完成后,我再次手动关闭VM实例。现在,我想要的是自动执行此任务,它将在每个月的第一天自动启动VM实例,然后抓取电子商务站点数据,然后当程序完成时,它将自动关闭VM实例。
我的程序几乎需要40个小时才能完成从电子商务网站获取所有数据。我在寻找云函数,我看到的最大时间限制是540
秒。由于我的程序执行时间太长,我不确定Cloud functions是否适用于我的情况。
有什么解决方案可以自动化这些流程吗?我是GCP的新手,如果这是一个非常琐碎的问题来寻求解决方案,我很抱歉。
发布于 2021-10-27 10:45:12
云函数不适合长时间运行的任务。因此,我认为在GCE上设置自动化任务是正确的决定。
您可以使用Compute Engine API关闭实例本身。例如,您可以使用gcloud compute instances stop $instance
1这样的命令来使用gcloud CLI工具。
备注
不要忘记设置具有正确权限的ServiceAccount,并将其附加到您的虚拟机以通过计算引擎API.2停止自身。2
您还可以使用startup_script3,这是GCE的特性,可以在VM启动后运行该命令。
因此,您可以像下面这样创建startup_script,它将为您的自动化工作。
python main.py
gcloud compute instance stop $instance
.参考文献
1个gcloud CLI参考
https://cloud.google.com/sdk/gcloud/reference/compute/instances/stop
2个带实例的ServiceAccount
3启动脚本
https://cloud.google.com/compute/docs/instances/startup-scripts
发布于 2021-10-27 10:52:45
例如,您可以执行以下架构:
所以它的工作原理是这样的:在月初,云调度器会触发云函数来启动虚拟机。VM将启动并自动启动您的main.py启动脚本。当脚本完成后,消息将被发送到PubSub主题。PubSub topic将触发第二个云函数,停止虚拟机。
下个月也一样。下个月也一样。等。
https://stackoverflow.com/questions/69736432
复制相似问题