Planowanie funkcji


Jeśli chcesz zaplanować uruchamianie funkcji o określonych porach, użyj modułu obsługi onSchedule, aby utworzyć temat Pub/Sub, który będzie aktywował zdarzenia w tym temacie za pomocą usługi Cloud Scheduler.

Zanim zaczniesz

Aby można było korzystać z tego rozwiązania w projekcie Firebase, musi on być objęty abonamentem Blaze. Jeśli nie masz abonamentu Blaze, przejdź na wyższy abonament.

Chociaż płatności są wymagane, możesz oczekiwać, że ogólnym kosztem da się zarządzać, ponieważ każde zadanie Cloud Scheduler kosztuje 0, 10 USD miesięcznie.Na koncie Google są dostępne 3 zadania bez ponoszenia opłat. Użyj kalkulatora cen Blaze, aby wygenerować oszacowanie kosztów na podstawie przewidywanego wykorzystania.

W Twoim projekcie muszą być włączone interfejsy Pub/Sub API 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 Platform.

Tworzenie zaplanowanej funkcji

W Cloud Functions dla Firebase logika planowania znajduje się w kodzie funkcji, bez żadnych specjalnych wymagań dotyczących czasu wdrażania. Aby utworzyć zaplanowaną funkcję, 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ć narzędzia Crontab do wybrania określonej strefy czasowej, w której ma być uruchamiana 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ść w polu timeZone musi być nazwą strefy czasowej z bazy danych TZ. Więcej informacji na temat obsługiwanych właściwości znajdziesz w dokumentacji usługi Cloud Scheduler.

Wdrażanie zaplanowanej funkcji

Gdy wdrożysz zaplanowaną funkcję, powiązane zadanie algorytmu szeregowania i temat Pub/Sub są tworzone automatycznie. Interfejs wiersza poleceń Firebase powtarza nazwę tematu, a zadanie i temat możesz wyświetlić w konsoli GCP. Temat ma nazwę zgodnie z tą konwencją:

firebase-scheduled-function_name-region

Przykład:

firebase-scheduled-scheduledFunctionCrontab-us-east1.