繁体   English   中英

如何在 GCP 中每天运行 Python 脚本?

[英]How to run a Python script every day in GCP?

我有一个简单的脚本,它从 API 检索数据并将其加载到 BigQuery 中。 我使用的是 Cloud Functions,它运行平稳,但是有一次达到了 9 分钟的运行时间限制。

花脚本需要的时间在 GCP 中执行此操作的最佳方法是什么? 我正在考虑创建另一个 Cloud Function,它每天启动一个抢占式 VM,VM 执行脚本并最终自行关闭。 为了保持低价,VM 总是在数据加载结束时关闭。 它将在第二天的选定时间开始。

我不知道从哪里开始这样做,但我想知道这是否是最好的方法。

云功能并不真正适合运行时间可能超过 10 分钟的批处理作业。 我建议使用 Compute Engine 虚拟机运行您的工作,并结合云功能/云调度程序来调度它。

这是一个粗略的大纲:

  1. 设置一个容器化的 Compute Engine 虚拟机。
  2. 创建云 function 以在发布-订阅触发器上启动 VM。
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()
  1. 创建一个 Cloud Scheduler 以根据您的计划触发 pub-sub。

这使您可以避免永远在线 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM