如何调度GCP VM实例,启动时自动执行自定义Python命令并定时启停
GCP长时运行爬虫自动化方案
你的40小时运行时长确实远超过Cloud Functions 540秒的最大运行上限,Cloud Functions完全不适配你的场景,直接基于你现有VM的运行架构做少量配置即可实现全自动化,不需要额外迁移服务,操作步骤如下:
核心实现逻辑
- 用Cloud Scheduler作为定时触发器,每月1号自动发送启动VM的指令
- VM启动后自动运行预设的爬虫脚本,任务执行完成后自动触发关机,全程不需要人工介入
- 产生的费用和你手动运行的成本完全一致,无额外冗余开销
具体配置步骤
1. 配置VM开机自动运行任务
首先给你的现有VM创建快照备份,避免配置出错丢失数据,之后编辑VM的元数据,添加startup-script启动项,内容参考:
#!/bin/bash # 替换为你实际的项目文件夹路径 cd /home/your_account_name/your_project_path # 替换为你实际使用的Python解释器路径,避免环境变量识别异常 /usr/bin/python3 main.py # 任务执行完成后自动关机 shutdown -h now
配置完成后可以先重启VM测试,确认爬虫能够正常启动、数据能正常写入BigQuery,再进行后续配置
2. 配置定时启动规则
打开Cloud Scheduler控制台新建定时任务:
- 触发频率填Cron表达式
0 0 1 * *,时区选择你所在的对应时区,即可实现每月1号零点自动触发 - 目标类型选择「HTTP」,请求方法选POST,请求URL填
https://compute.googleapis.com/compute/v1/projects/你的GCP项目ID/zones/你的VM所属可用区/instances/你的VM实例名称/start - 身份验证选择「OAuth 2.0 令牌」,服务账号选择拥有Compute Instance Admin权限的账号即可
3. 权限校验与测试
确保Cloud Scheduler所用服务账号拥有VM启动权限,VM自身的服务账号拥有BigQuery写入权限,和你之前手动运行时的权限配置保持一致即可。配置完成后可以手动触发一次Cloud Scheduler任务,验证VM启动、爬虫运行、自动关机的全流程是否正常,跑通后即可正式使用。
可选优化建议
你可以在main.py中添加异常捕获逻辑,即使爬虫运行出错也触发自动关机,避免VM空跑产生额外费用;也可以添加简单的运行状态通知逻辑,任务成功或失败时主动给你推送提醒,方便追踪运行状态。
内容的提问来源于stack exchange,提问作者sksoumik
相关产品推荐
相关产品推荐

