Wenn Sie Funktionen so planen möchten, dass sie zu bestimmten Zeiten ausgeführt werden, verwenden Sie den onSchedule
-Handler, um ein Pub/Sub-Thema zu erstellen, bei dem mit Cloud Scheduler Ereignisse für dieses Thema ausgelöst werden.
Hinweis
Damit Sie diese Lösung in Ihrem Firebase-Projekt verwenden können, muss für Ihr Projekt das Blaze-Preismodell verwendet werden. Wenn Sie noch keinen Blaze-Tarif haben, upgraden Sie Ihren Tarif.
Die Abrechnung ist zwar erforderlich, die Gesamtkosten sind jedoch überschaubar. Pro Cloud Scheduler-Job fallen 0,10 $ pro Monat an. Außerdem sind pro Google-Konto drei Jobs kostenlos. Sie können mithilfe des Preisrechners von Blaze eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.
Die APIs Pub/Sub und Cloud Scheduler müssen für Ihr Projekt aktiviert sein. Diese sollten für die meisten Firebase-Projekte bereits aktiviert sein. Sie können dies in der Google Cloud Console überprüfen.
Geplante Funktion schreiben
In Cloud Functions for Firebase befindet sich die Planungslogik ohne besondere Anforderungen an die Bereitstellungszeit im Funktionscode. Verwenden Sie functions.pubsub.schedule('your schedule').onRun((context))
, um eine geplante Funktion zu erstellen.
Wenn Sie beispielsweise eine Funktion alle fünf Minuten mit der App Engine-Syntax von cron.yaml ausführen möchten, gehen Sie so vor:
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
return null;
});
Cloud Scheduler unterstützt sowohl Unix-Crontab- als auch die App Engine-Syntax. Wenn Sie beispielsweise Crontab verwenden möchten, um eine bestimmte Zeitzone auszuwählen, in der eine geplante Funktion ausgeführt werden soll, gehen Sie so vor:
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;
});
Der Wert für timeZone
muss ein Zeitzonenname aus der tz-Datenbank sein. Weitere Informationen zu unterstützten Attributen finden Sie in der Referenz zu Cloud Scheduler.
Geplante Funktion bereitstellen
Wenn Sie eine geplante Funktion bereitstellen, werden der zugehörige Planerjob und das Pub/Sub-Thema automatisch erstellt. Die Firebase CLI gibt den Namen des Themas zurück. Sie können den Job und das Thema in der Google Cloud Console aufrufen. Das Thema wird nach der folgenden Konvention benannt:
firebase-scheduled-function_name-region
Beispiel:
firebase-scheduled-scheduledFunctionCrontab-us-east1.