如果您想安排函數在指定時間運行,請使用onSchedule
處理程序創建一個Pub/Sub主題,該主題使用Cloud Scheduler觸發該主題上的事件。
在你開始之前
要在您的 Firebase 項目中使用此解決方案,您的項目必須採用 Blaze 定價計劃。如果它尚未包含在 Blaze 計劃中,請升級您的定價計劃。
雖然需要計費,但您可以預期總體成本是可控的,因為每個 Cloud Scheduler 作業每月花費 0.10 美元 (USD),並且每個 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。