日程功能


如果您想要安排函數在指定時間運行,請使用onSchedule處理程序建立Pub/Sub主題,該主題使用Cloud Scheduler觸發該主題上的事件。

在你開始之前

要在您的 Firebase 專案中使用此解決方案,您的專案必須採用 Blaze 定價方案。如果 Blaze 方案中尚未包含該服務,請升級您的定價方案

儘管需要計費,但您可以預期總體成本是可控的,因為每個 Cloud Scheduler 作業每月的費用為 0.10 美元,並且每個 Google 帳戶可以免費使用 3 個作業。使用 Blaze定價計算器根據您的預計使用情況產生成本估算。

必須為您的專案啟用 Pub/Sub 和 Cloud Scheduler API。大多數 Firebase 專案應該已經啟用了這些功能;您可以在Google Cloud Platform Console中進行驗證。

寫一個定時函數

在 Cloud Functions for Firebase 中,調度邏輯駐留在您的函數程式碼中,沒有特殊的部署時間需求。若要建立計劃函數,請使用functions.pubsub.schedule('your schedule').onRun((context)) 。例如,要使用App Engine cron.yaml語法每五分鐘執行一次函數,請執行以下操作:

exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('This will be run every 5 minutes!');
  return null;
});

Cloud Scheduler 支援 Unix Crontab 和 App Engine 語法。例如,若要使用 Crontab 選擇執行計劃函數的特定時區,請執行下列操作:

exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});

timeZone的值必須是tz 資料庫中的時區名稱。有關支援的屬性的更多信息,請參閱Cloud Scheduler 參考

部署預定功能

當您部署計劃函數時,會自動建立相關的排程程式作業和發佈/訂閱主題。 Firebase CLI 會回顯主題名稱,您可以在GCP Console中查看作業和主題。主題根據以下約定命名:

firebase-scheduled- function_name - region

例如:

firebase-scheduled-scheduledFunctionCrontab-us-east1。