Szukam sposobu na zaplanowanie funkcji Cloud Functions dla Firebase lub innymi słowy, aby uruchamiać je w określonym czasie.
Odpowiedzi:
Aktualizacja 2019-04-18
Obecnie istnieje bardzo prosty sposób wdrażania zaplanowanego kodu w Cloud Functions za pośrednictwem Firebase.
Możesz użyć prostej składni tekstowej:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
Lub bardziej elastyczny format tabeli cron:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
Aby dowiedzieć się więcej na ten temat, zobacz:
Pamiętaj, że Twój projekt musi być objęty planem Blaze, aby to zadziałało, więc poniżej zostawiam alternatywne opcje w celach informacyjnych.
Jeśli chcesz zaplanować pojedyncze wywołanie funkcji chmury z opóźnieniem w trakcie wykonywania innego wyzwalacza, możesz to skonfigurować za pomocą zadań w chmurze . Przeczytaj ten artykuł aby się z rozszerzonym przykładem tego, jak to działa.
Oryginalna odpowiedź poniżej ...
Nie ma jeszcze wbudowanego wyzwalacza typu runat / cron.
W tej chwili najlepszym rozwiązaniem jest okresowe uruchamianie funkcji HTTP za pomocą usługi zewnętrznej. Zobacz ten przykład w repozytorium functions-samples, aby uzyskać więcej informacji. Lub użyj niedawno wprowadzonego Google Cloud Scheduler, aby uruchomić Cloud Functions przez PubSub lub HTTPS:
Gorąco polecam również przeczytanie tego posta na blogu Firebase: Jak zaplanować (Cron) zadania za pomocą funkcji Cloud Functions dla Firebase oraz tego filmu: Synchronizowanie funkcji chmury w Firebase przy użyciu wyzwalacza HTTP i Cron .
Ten ostatni link używa cron-job.org do uruchamiania funkcji Cloud i działa w przypadku projektów objętych bezpłatnym abonamentem. Zwróć uwagę, że umożliwia to każdemu wywołanie Twojej funkcji bez autoryzacji, więc możesz chcieć uwzględnić jakiś mechanizm ochrony przed nadużyciami w samym kodzie.
Each Cloud Scheduler job costs $0.10 (USD) per month
założenie, że „zadanie” nie oznacza każdorazowego uruchomienia zaplanowanej rzeczy, ale koszt licznika czasu? tj. praca wykonywana co minutę kosztuje tylko 0,10 USD? (z wyłączeniem wszelkich funkcji chmury, które wywołuje).
To, co możesz zrobić, to uruchomić instancję AppEngine, która jest wyzwalana przez zadanie cron i emitowana do PubSub. Napisałem post na blogu specjalnie na ten temat, możesz rzucić okiem:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
cron-job.org
czym Jen mówi w poście na blogu, jest bezpłatne.