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
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) => {
functions.logger.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ć 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) => {
functions.logger.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 stref czasowych. Więcej informacji o obsługiwanych właściwościach znajdziesz w dokumentacji Cloud Scheduler.
Obiekt context
w przypadku zaplanowanej funkcji zawiera informacje o zdarzeniu Pub/Sub, które ją wywołało. Przykład:
{
"resource": {
"name": "projects/PROJECT_ID/topics/PROJECT_TOPIC",
"service": "pubsub.googleapis.com",
"type": "type.googleapis.com/google.pubsub.v1.PubsubMessage"
},
"timestamp": "YYYY-MM-DDTHH:MM:SS.sssZ",
"eventType": "google.pubsub.topic.publish",
"eventId": "EVENT_ID",
"params": {}
}
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.