[英]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.