Catch up on highlights from Firebase at Google I/O 2023. Learn more

Funkcje harmonogramu


Jeśli chcesz zaplanować uruchamianie funkcji w określonych godzinach, użyj procedury obsługi onSchedule , aby utworzyć temat Pub/Sub , który używa usługi Cloud Scheduler do wyzwalania zdarzeń w tym temacie.

Zanim zaczniesz

Aby korzystać z tego rozwiązania w projekcie Firebase, Twój projekt musi być objęty planem cenowym Blaze. Jeśli nie jest to jeszcze objęte planem Blaze, uaktualnij swój plan cenowy .

Chociaż fakturowanie jest wymagane, można oczekiwać, że całkowity koszt będzie możliwy do zarządzania, ponieważ każde zadanie Cloud Scheduler kosztuje 0,10 USD (USD) miesięcznie, a na konto Google przypadają trzy zadania bez żadnych opłat. Skorzystaj z kalkulatora cen Blaze, aby wygenerować kosztorys na podstawie przewidywanego zużycia.

Interfejsy API Pub/Sub i Cloud Scheduler muszą być włączone w Twoim projekcie. Powinny one już być włączone w większości projektów Firebase; możesz zweryfikować w konsoli Google Cloud Platform .

Napisz zaplanowaną funkcję

W Cloud Functions for Firebase logika planowania znajduje się w kodzie funkcji, bez specjalnych wymagań dotyczących czasu wdrożenia. Aby utworzyć zaplanowaną funkcję, użyj functions.pubsub.schedule('your schedule').onRun((context)) . Na przykład, aby uruchamiać funkcję co pięć minut ze składnią cron.yaml App Engine , wykonaj coś takiego:

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

Cloud Scheduler obsługuje zarówno składnię Unix Crontab, jak i App Engine. Na przykład, aby użyć Crontab do wybrania określonej strefy czasowej, w której ma zostać uruchomiona zaplanowana funkcja, wykonaj coś takiego:

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;
});

Wartość timeZone musi być nazwą strefy czasowej z bazy danych tz . Więcej informacji na temat obsługiwanych właściwości można znaleźć w dokumentacji usługi Cloud Scheduler .

Wdróż zaplanowaną funkcję

Podczas wdrażania zaplanowanej funkcji automatycznie tworzone jest powiązane zadanie harmonogramu i temat publikowania/subskrypcji. Interfejs CLI Firebase powtarza nazwę tematu, a zadanie i temat można wyświetlić w konsoli GCP . Temat jest nazwany zgodnie z następującą konwencją:

firebase-scheduled- function_name - region

Na przykład:

firebase-scheduled-scheduledFunctionCrontab-us-east1.