Planowanie funkcji


Jeśli chcesz zaplanować wykonywanie funkcji w określonych momentach, użyj elementu onSchedule, aby utworzyć temat Pub/Sub, który używa elementu Cloud Scheduler do wywoływania 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. Większość projektów Firebase powinna mieć te usługi włączone. 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 uruchomić funkcję co 5 minut za pomocą składni App Engine cron.yaml, wykonaj takie czynności:

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. W wierszu poleceń Firebase wyświetla się nazwa tematu. Zadania i tematy 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.