Wenn Sie Funktionen zu bestimmten Zeiten ausführen möchten, verwenden Sie den onSchedule
-Handler, um ein Pub/Sub-Thema zu erstellen, das Cloud Scheduler verwendet, um Ereignisse für dieses Thema auszulösen.
Hinweis
Wenn Sie diese Lösung in Ihrem Firebase-Projekt verwenden möchten, muss Ihr Projekt im Blaze-Tarif sein. Wenn Sie noch nicht den Blaze-Tarif nutzen, führen Sie ein Upgrade durch.
Die Abrechnung ist zwar erforderlich, aber die Gesamtkosten sind überschaubar, da jeder Cloud Scheduler-Job 0,10 $ (USD) pro Monat kostet und pro Google-Konto drei Jobs kostenlos sind. Sie können mithilfe des Preisrechners für 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 in Ihrem Funktionscode. Es gibt keine besonderen Anforderungen für die Bereitstellung. 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 Syntax App Engine 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 Eigenschaften finden Sie in der Cloud Scheduler-Referenz.
Geplante Funktion bereitstellen
Wenn Sie eine geplante Funktion bereitstellen, werden der zugehörige Scheduler-Job und das Pub/Sub-Thema automatisch erstellt. In der Firebase-Befehlszeile wird der Themenname ausgegeben. Sie können den Job und das Thema in der Google Cloud Console aufrufen. Das Thema wird nach folgender Konvention benannt:
firebase-scheduled-function_name-region
Beispiel:
firebase-scheduled-scheduledFunctionCrontab-us-east1.