İşlevleri belirli zamanlarda çalışacak şekilde planlamak istiyorsanız onSchedule işleyicisini kullanarak bir Pub/Sub konusu oluşturun. Bu konu, etkinlikleri tetiklemek için Cloud Scheduler kullanır.
Başlamadan önce
Zamanlanmış işlevler faturalandırılsa da her bir Cloud Scheduler işinin aylık maliyeti 0,10 ABD doları olduğundan ve Google Hesabı başına üç iş ücretsiz olarak sunulduğundan toplam maliyetin yönetilebilir olmasını bekleyebilirsiniz. Tahmini kullanımınıza göre maliyet tahmini oluşturmak için Blaze Fiyat Hesaplayıcıyı kullanın.
Projeniz için Pub/Sub ve Cloud Scheduler API'leri etkinleştirilmelidir. Bunlar çoğu Firebase projesinde zaten etkinleştirilmiştir. Google Cloud konsolunda doğrulayabilirsiniz.
Programlanmış işlev yazma
Cloud Functions for Firebase sürümünde, planlama mantığı işlev kodunuzda bulunur ve dağıtım sırasında özel gereksinimler yoktur. Zamanlanmış bir işlev oluşturmak için functions.pubsub.schedule('your schedule').onRun((context)) kullanın.
Örneğin, App Engine cron.yaml söz dizimiyle her beş dakikada bir işlev çalıştırmak için aşağıdaki gibi 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;
});
Cloud Scheduler, hem Unix Crontab hem de App Engine söz dizimini destekler. Örneğin, Crontab'ı kullanarak planlanmış bir işlevin çalıştırılacağı belirli bir saat dilimini seçmek için aşağıdaki gibi 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ından 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 programlayıcı işi ve Pub/Sub konusu otomatik olarak oluşturulur. Firebase CLI, konu adını gösterir. İşi ve 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.