Firebase için Cloud Functions'ı planlamanın veya başka bir deyişle bunları belirli bir zamanda tetiklemenin bir yolunu arıyorum.
Yanıtlar:
Güncelleme 2019-04-18
Firebase aracılığıyla Cloud Functions üzerinde planlanmış kod dağıtmanın artık çok basit bir yolu var.
Basit bir metin sözdizimi kullanabilirsiniz:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
Veya daha esnek cron tablo formatı:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
Bununla ilgili daha fazla bilgi edinmek için bkz .:
Bunun çalışması için projenizin bir Blaze planında olması gerektiğini unutmayın, bu nedenle referans için aşağıdaki alternatif seçenekleri bırakıyorum.
Başka bir tetikleyicinin yürütülmesi dahilindeki bir gecikmeyle bir Bulut İşlevinin tek bir çağrısını planlamak istiyorsanız , bunu ayarlamak için Bulut Görevlerini kullanabilirsiniz . Bunun nasıl çalışabileceğine dair geniş bir örnek için bu makaleyi okuyun .
Aşağıdaki orijinal cevap ...
Henüz yerleşik bir runat / cron türü tetikleyici yoktur.
Şu an için en iyi seçenek, bir HTTP işlevini periyodik olarak tetiklemek için harici bir hizmet kullanmaktır. Daha fazla bilgi için fonksiyon örnekleri deposundaki bu örneğe bakın . Veya PubSub veya HTTPS aracılığıyla Cloud Functions'ı tetiklemek için kısa süre önce kullanıma sunulan Google Cloud Scheduler'ı kullanın:
Firebase blogundaki şu gönderiyi de okumanızı tavsiye ederim: Firebase için Cloud Functions ile Nasıl Planlanır (Cron) İşleri ve şu video: HTTP Tetikleyici ve Cron kullanarak Firebase için Zamanlama Cloud Functions .
Bu son bağlantı, Cloud Functions'ı tetiklemek için cron-job.org'u kullanıyor ve ücretsiz plan kapsamındaki projeler için çalışıyor. Bunun, herhangi birinin yetkiniz olmadan işlevinizi çağırmasına izin verdiğini unutmayın, bu nedenle kodun kendisine bazı kötüye kullanım koruma mekanizmaları eklemek isteyebilirsiniz.
Each Cloud Scheduler job costs $0.10 (USD) per month
"iş" varsayımı, planlanan şeyin her tetiklenişinde değil, zamanlayıcı başına maliyet anlamına mı geliyor? Yani her dakika çalışan bir işin maliyeti sadece 0,10 $? (çağırdığı bulut işlevleri hariç).
Yapabileceğiniz şey, cron işi tarafından tetiklenen ve PubSub'a gönderilen bir AppEngine örneğini döndürmektir. Özellikle bunun üzerine bir blog yazısı yazdım, bir göz atmak isteyebilirsiniz:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
cron-job.org
Jen'in blog gönderisinde bahsettiği gerçeği de kullanmak ücretsizdir.