Jeśli chcesz zaplanować uruchamianie funkcji o określonych porach, użyj modułu obsługi onSchedule
, aby utworzyć temat Pub/Sub, który używa Cloud Scheduler do wywoływania zdarzeń w tym temacie.
Zanim zaczniesz
Aby używać tego rozwiązania w projekcie Firebase, musisz mieć abonament Blaze. Jeśli nie masz jeszcze abonamentu Blaze, przejdź na wyższy pakiet.
Wymagane jest rozliczenie, ale ogólny koszt powinien być przystępny, ponieważ każde Cloud Schedulerzadanie kosztuje 0, 10 USD miesięcznie, a na każde konto Google przysługują 3 bezpłatne zadania. Skorzystaj z kalkulatora cen Blaze, aby oszacować koszty na podstawie przewidywanego wykorzystania.
W projekcie musisz włączyć interfejsy API Pub/Sub i Cloud Scheduler. W przypadku większości projektów Firebase powinny być już włączone. Możesz to sprawdzić w Google Cloud Console.
Pisanie zaplanowanej funkcji
W Cloud Functions for Firebase logika planowania znajduje się w kodzie funkcji i nie ma specjalnych wymagań dotyczących 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 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ć Crontaba do wybrania konkretnej 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ść parametru timeZone
musi być nazwą strefy czasowej z bazy danych tz. Więcej informacji o obsługiwanych właściwościach znajdziesz w dokumentacji Cloud Scheduler.
Wdrażanie zaplanowanej funkcji
Gdy wdrażasz zaplanowaną funkcję, powiązane zadanie harmonogramu i temat Pub/Sub są tworzone automatycznie. Interfejs Firebase CLI wyświetla nazwę tematu, a zadanie i temat możesz wyświetlić w konsoli Google Cloud. Temat jest nazywany zgodnie z tą konwencją:
firebase-scheduled-function_name-region
Przykład:
firebase-scheduled-scheduledFunctionCrontab-us-east1.