簡體   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