如何在GCP中每天运行Python脚本?
我有一个简单的脚本,它从API检索数据并将其加载到BigQuery中。我使用的是云计算功能,它运行得很顺利,但是有一段时间达到了9分钟的运行时间限制 在GCP中,花脚本所需的时间完成这项工作的最佳方法是什么?我在考虑创建另一个云函数,每天启动一个可抢占的VM,VM执行脚本,最后关闭自己。为了保持低价格,VM总是在数据加载结束时关闭。它将在第二天选定的时间开始 我不知道从哪里开始,但我想知道这是否是最好的方法。这行吗如何在GCP中每天运行Python脚本?,python,google-cloud-platform,google-cloud-functions,google-compute-engine,Python,Google Cloud Platform,Google Cloud Functions,Google Compute Engine,我有一个简单的脚本,它从API检索数据并将其加载到BigQuery中。我使用的是云计算功能,它运行得很顺利,但是有一段时间达到了9分钟的运行时间限制 在GCP中,花脚本所需的时间完成这项工作的最佳方法是什么?我在考虑创建另一个云函数,每天启动一个可抢占的VM,VM执行脚本,最后关闭自己。为了保持低价格,VM总是在数据加载结束时关闭。它将在第二天选定的时间开始 我不知道从哪里开始,但我想知道这是否是最好的方法。这行吗 import schedule import time def run_dai
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)
云功能并不真正适合于运行时间可能超过10分钟的批处理作业。我建议您使用计算引擎VM运行作业,并使用云功能/云调度器的组合对其进行调度 这里有一个大致的轮廓:
这使您可以避免总是在虚拟机上的成本。请参阅此了解更多详细信息。为什么不使用cron作业?使用云调度器的GCP cron作业?我今天已经用它来激活云功能了。我会用它来启动创建、执行和关闭VM的函数吗?我是这样想的,我只是不确定这是否真的是理想的。谢谢您也可以考虑使用VM。IIRC您可以从GCP免费获得一个f1微型实例。如果您的脚本有很高的内存需求,那么您可能需要一个更大的实例。我将使用计算引擎上的VM。谢谢我将寻找一种方法来创建它,运行Python脚本并每天关闭它。您的脚本运行多长时间?它如何使用内存?它使用多CPU吗?需要永久磁盘吗?谢谢!起初,我考虑在加载数据后关闭VM(对不起,我只是在帖子中包含了这些信息,它丢失了)。也就是说,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()