Jeśli chcesz zaplanować wykonywanie funkcji w określonych momentach, użyj elementu onSchedule
do utworzenia tematu 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ż płatności są wymagane, możesz oczekiwać, że ogólnym kosztem da się zarządzać, ponieważ każde zadanie w usłudze Cloud Scheduler kosztuje 0,10 USD miesięcznie, a na jednym koncie Google są bezpłatne 3 zadania. Użyj kalkulatora cen Blaze, aby wygenerować oszacowanie kosztów 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, bez żadnych 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 wykonywać funkcję co 5 minut za pomocą składni App Engine cron.yaml, wykonaj te 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ć 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 o obsługiwanych właściwościach znajdziesz w dokumentacji referencyjnej Cloud Scheduler.
Wdrażanie zaplanowanej funkcji
Gdy wdrożysz zaplanowaną funkcję, powiązane zadanie algorytmu szeregowania 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ę zgodnie z tą konwencją:
firebase-scheduled-function_name-region
Przykład:
firebase-scheduled-scheduledFunctionCrontab-us-east1.