Firebase için Cloud Functions zamanında tetiklenir mi?


Yanıtlar:


115

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:

görüntü açıklamasını buraya girin

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.


1
Bunun etrafında hiçbir şey değişmedi. cron-job.orgJen'in blog gönderisinde bahsettiği gerçeği de kullanmak ücretsizdir.
Frank van Puffelen

2
Jen'in videosu kullanımdan kaldırıldı olarak etiketlendi. Peki bunu yapmanın başka bir yolu var mı?
b-fg

2
Yaklaşım, videonun (ve blog gönderisinin) yapıldığı gün olduğu kadar bugün de geçerlidir. Sözdizimi biraz değişti, ancak bu özel durumun bundan etkilendiğini sanmıyorum. Bu işi yapmakta sorun yaşıyorsanız, zaten ne yaptığınızı gösteren bir soru açın.
Frank van Puffelen

1
Vay canına, sonunda bunu basitçe yapmanın bir yolunu uyguladılar! En sonunda !!!! Güncelleme için teşekkürler
schankam

1
Bulut Planlayıcı sayfasından: 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ç).
Aaron Kül

13

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


1
Saatte bir tetiklenen bir cron işi için aylık tahmini maliyet nedir?
Ehtesham Hasan

3
@EhteshamHasan Potansiyel olarak ücretsiz gibi görünüyor: cloud.google.com/free . Şu anda 28 örnek saati / gün ücretsiz; Ayrıca, ücretsiz atm için crons çalıştıran Google Compute Engine'in f1-micro örneği w / Linux var.
bitsoflogic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.