İşlevlerin belirli zamanlarda çalışmasını planlamak istiyorsanız onSchedule işleyicisini kullanarak Pub/Sub konusu oluşturun. Bu konu, Cloud Scheduler kullanarak ilgili konudaki etkinlikleri tetikler.
Başlamadan önce
Planlanmış işlevler faturalandırılsa da genel maliyetin yönetilebilir olmasını bekleyebilirsiniz.Her Cloud Scheduler işin aylık maliyeti 0,10 ABD dolarıdır ve Google hesabı başına üç iş ücretsiz olarak sağlanır. Tahmini kullanımınıza göre maliyet tahmini oluşturmak için Blaze fiyat hesaplayıcısını kullanın.
Projenizde Pub/Sub ve Cloud Scheduler API'leri etkinleştirilmelidir. Bunlar çoğu Firebase projesi için zaten etkinleştirilmiş olmalıdır. Google Cloud konsolunda doğrulama yapabilirsiniz.
Planlanmış bir fonksiyon yazma
Cloud Functions for Firebase'da planlama mantığı, işlevler kodunuzda bulunur ve özel bir dağıtım zamanı şartı yoktur. Planlanmış işlev oluşturmak için functions.pubsub.schedule('your schedule').onRun((context)) kullanın.
Örneğin, App Engine cron.yaml söz dizimiyle bir işlevi her beş dakikada bir çalıştırmak için aşağıdakine benzer bir işlem yapın:
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
return null;
});
Hem Unix Crontab hem de App Engine söz dizimi Cloud Scheduler tarafından desteklenir. Örneğin, Crontab'ı kullanarak planlanmış bir işlevin çalıştırılacağı belirli bir saat dilimini seçmek için aşağıdakine benzer bir işlem yapın:
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;
});
timeZone değeri, tz veritabanındaki bir saat dilimi adı olmalıdır. Desteklenen özellikler hakkında daha fazla bilgi için Cloud Scheduler referansına bakın.
Planlanmış bir işlevi dağıtma
Programlanmış bir işlevi dağıttığınızda ilgili planlayıcı işi ve pub/sub konusu otomatik olarak oluşturulur. Firebase CLI, konu adını yansıtır ve işi ile konuyu Google Cloud konsolunda görüntüleyebilirsiniz. Konu, aşağıdaki kurala göre adlandırılır:
firebase-scheduled-function_name-region
Örneğin:
firebase-scheduled-scheduledFunctionCrontab-us-east1.