Planen Sie Funktionen


Wenn Sie die Ausführung von Funktionen zu bestimmten Zeiten planen 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.

Bevor Sie beginnen

Um diese Lösung in Ihrem Firebase-Projekt verwenden zu können, muss Ihr Projekt im Blaze-Preisplan enthalten sein. Wenn es noch nicht im Blaze-Plan enthalten ist, aktualisieren Sie Ihren Preisplan .

Obwohl eine Abrechnung erforderlich ist, können Sie davon ausgehen, dass die Gesamtkosten überschaubar sind, da jeder Cloud Scheduler-Job 0,10 US-Dollar pro Monat kostet und pro Google-Konto drei Jobs kostenlos zur Verfügung stehen. Verwenden Sie den Blaze- Preisrechner , um einen Kostenvoranschlag basierend auf Ihrer voraussichtlichen Nutzung zu erstellen.

Die Pub/Sub- und Cloud Scheduler-APIs 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 Platform Console überprüfen.

Schreiben Sie eine geplante Funktion

In Cloud Functions for Firebase befindet sich die Planungslogik in Ihrem Funktionscode, ohne besondere Anforderungen an die Bereitstellungszeit. Um eine geplante Funktion zu erstellen, verwenden Sie functions.pubsub.schedule('your schedule').onRun((context)) . Um beispielsweise alle fünf Minuten eine Funktion mit der Cron.yaml-Syntax von App Engine auszuführen, gehen Sie folgendermaßen vor:

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

Sowohl die Unix-Crontab- als auch die App Engine-Syntax werden von Cloud Scheduler unterstützt. Um beispielsweise mit Crontab eine bestimmte Zeitzone auszuwählen, in der eine geplante Funktion ausgeführt werden soll, gehen Sie folgendermaßen 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 .

Stellen Sie eine geplante Funktion bereit

Wenn Sie eine geplante Funktion bereitstellen, werden der zugehörige Scheduler-Job und das Pub/Sub-Thema automatisch erstellt. Die Firebase-CLI gibt den Themennamen wieder und Sie können den Job und das Thema in der GCP Console anzeigen. Das Thema wird nach folgender Konvention benannt:

firebase-scheduled- function_nameregion

Zum Beispiel:

firebase-scheduled-scheduledFunctionCrontab-us-east1.