Planowanie funkcji


Jeśli chcesz zaplanować uruchamianie funkcji w określonych godzinach, użyj modułu obsługi onSchedule, aby utworzyć temat Pub/Sub, w którym usługa Cloud Scheduler aktywuje zdarzenia w tym temacie.

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 jeszcze abonamentu Blaze, przejdź na wyższy abonament.

Płatności są wymagane, jednak ogólne koszty będą łatwe do zarządzania, ponieważ każde zadanie Cloud Scheduler kosztuje 0, 10 USD miesięcznie, a na jednym koncie Google można bezpłatnie umieścić 3 zadania. Użyj kalkulatora cen Blaze, aby wygenerować szacowane koszty na podstawie przewidywanego wykorzystania.

W projekcie muszą być włączone interfejsy Pub/Sub API i Cloud Scheduler API. Powinny one być już włączone w większości projektów Firebase. Możesz je sprawdzić w konsoli Google Cloud Platform.

Napisz zaplanowaną funkcję

W Cloud Functions dla Firebase logika planowania znajduje się w kodzie funkcji bez specjalnych wymagań dotyczących czasu wdrażania. Aby utworzyć zaplanowaną funkcję, użyj functions.pubsub.schedule('your schedule').onRun((context)). Aby na przykład uruchamiać funkcję co 5 minut z użyciem składni cron.yaml w App Engine, wykonaj to polecenie:

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

Usługa Cloud Scheduler obsługuje zarówno składnię uniksowej Crontab, jak i App Engine. Jeśli na przykład chcesz użyć narzędzia Crontab do wyboru określonej strefy czasowej, w której chcesz uruchomić zaplanowaną funkcję, 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ść timeZone musi być nazwą strefy czasowej z bazy danych tz. Więcej informacji o obsługiwanych właściwościach znajdziesz w dokumentacji usługi Cloud Scheduler.

Wdrażanie zaplanowanej funkcji

Gdy wdrażasz zaplanowaną funkcję, powiązane zadanie algorytmu szeregowania i temat Pub/Sub są tworzone automatycznie. Interfejs wiersza poleceń Firebase powtarza nazwę tematu. Zadanie i temat możesz wyświetlić w konsoli GCP. Nazwa tematu jest zgodna z następującą konwencją:

firebase-scheduled-function_name-region

Przykład:

firebase-scheduled-scheduledFunctionCrontab-us-east1