[英]How to run a Python script every day in GCP?
我有一个简单的脚本,它从 API 检索数据并将其加载到 BigQuery 中。 我使用的是 Cloud Functions,它运行平稳,但是有一次达到了 9 分钟的运行时间限制。
花脚本需要的时间在 GCP 中执行此操作的最佳方法是什么? 我正在考虑创建另一个 Cloud Function,它每天启动一个抢占式 VM,VM 执行脚本并最终自行关闭。 为了保持低价,VM 总是在数据加载结束时关闭。 它将在第二天的选定时间开始。
我不知道从哪里开始这样做,但我想知道这是否是最好的方法。
云功能并不真正适合运行时间可能超过 10 分钟的批处理作业。 我建议使用 Compute Engine 虚拟机运行您的工作,并结合云功能/云调度程序来调度它。
这是一个粗略的大纲:
import googleapiclient.discovery
def start_job(event, context):
"""Triggered from a message on a Cloud Pub/Sub topic.
Args:
event (dict): Event payload.
context (google.cloud.functions.Context): Metadata for the event.
"""
compute = googleapiclient.discovery.build('compute', 'v1')
compute.instances().insert(
project='project_id',
zone='us-east1-b',
body=vm_config).execute()
这使您可以避免永远在线 VM 的成本。 有关更多详细信息,请参阅此博客文章。
这能行吗?
import schedule
import time
def run_daily():
do something
do something else
schedule.every().day.at("08:20:30").do(run_daily) # HH MM SS
while True:
schedule.run_pending()
time.sleep(1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.