Planowanie funkcji


Jeśli chcesz zaplanować uruchamianie funkcji o określonych porach, użyj modułu obsługi onSchedule do utworzenia tematu Pub/Sub, który będzie używać Cloud Scheduler do aktywowania zdarzeń w tym temacie.

Zanim zaczniesz

Aby można było używać tego rozwiązania w projekcie Firebase, musisz mieć abonament Blaze. Jeśli nie masz jeszcze abonamentu Blaze, przejdź na wyższy abonament.

Chociaż wymaga to rozliczeń, ogólny koszt powinien być umiarkowany, ponieważ każde zadanie Cloud Scheduler kosztuje 0,10 USD miesięcznie, a na koncie Google można uruchomić 3 zadania bezpłatnie. Kalkulator cen Blaze pozwala oszacować koszty na podstawie przewidywanego wykorzystania.

W projekcie musisz włączyć interfejsy API Pub/Sub i Cloud Scheduler. Te funkcje powinny być już włączone w większości projektów Firebase. Możesz to sprawdzić w konsoli Google Cloud.

Tworzenie zaplanowanej funkcji

W Cloud Functions for Firebase logika planowania znajduje się w kodzie funkcji i nie wymaga specjalnych wymagań dotyczących czasu wdrażania. Aby utworzyć funkcję zaplanowaną, użyj funkcji functions.pubsub.schedule('your schedule').onRun((context)). Aby na przykład uruchamiać funkcję co 5 minut ze składnią App Engine cron.yaml, 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. Aby na przykład użyć Crontab do wybrania konkretnej strefy czasowej, w której ma być wykonywana zaplanowana funkcja, wykonaj te czynności:

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ść parametru timeZone musi być nazwą strefy czasowej z bazy danych tz. Więcej informacji o obsługiwanych właściwościach znajdziesz w dokumentacji referencyjnej Cloud Scheduler.

Wdrażanie zaplanowanej funkcji

Gdy wdrażasz zaplanowaną funkcję, powiązane zadanie harmonogramu i temat pub/sub są tworzone automatycznie. Interfejs wiersza poleceń Firebase powtarza nazwę tematu, a zadanie i temat możesz wyświetlić w konsoli Google Cloud. Temat ma nazwę utworzoną według tej konwencji:

firebase-scheduled-function_name-region

Przykład:

firebase-scheduled-scheduledFunctionCrontab-us-east1.