Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

調度功能

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

如果您想安排函數在指定時間運行,請使用functions.pubsub.schedule().onRun()這種便捷方法創建一個Pub/Sub主題並使用Cloud Scheduler觸發該主題上的事件,確保您的函數在所需的時間表。

在你開始之前

要在您的 Firebase 項目中使用此解決方案,您的項目必須採用 Blaze 定價計劃。如果它不在 Blaze 計劃中,請升級您的定價計劃

儘管需要計費,但您可以預期總體成本是可控的,因為每個 Cloud Scheduler 作業每月花費 0.10 美元(美元),並且每個 Google 帳戶可以免費提供三個作業。使用 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。