Buka konsol

Menjadwalkan fungsi

Jika Anda ingin menjadwalkan fungsi untuk dijalankan pada waktu yang ditentukan, gunakan functions.pubsub.schedule().onRun(). Metode yang praktis ini membuat topik Cloud Pub/Sub Google dan menggunakan Google Cloud Scheduler untuk memicu peristiwa pada topik tersebut, yang memastikan bahwa fungsi Anda berjalan sesuai jadwal yang diinginkan.

Sebelum memulai

Untuk menggunakan solusi ini dalam project Firebase Anda, Anda harus menggunakan paket penagihan Blaze. Jika belum menggunakan paket Blaze, upgrade akun Anda.

Meskipun penagihan diperlukan, biaya keseluruhan akan dapat dikelola, karena setiap tugas Cloud Scheduler memerlukan biaya $0,10 (USD) per bulan, dan terdapat kuota tiga tugas gratis per akun Google. Gunakan kalkulator harga paket Blaze untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

Google Cloud Pub/Sub dan Cloud Scheduler API harus diaktifkan untuk project Anda. Fitur ini seharusnya sudah diaktifkan untuk sebagian besar project Firebase. Anda dapat memverifikasinya di Google Cloud Platform Console.

Menulis fungsi terjadwal

Di Cloud Functions for Firebase, logika penjadwalan berada di kode fungsi Anda, tanpa persyaratan waktu penerapan khusus. Untuk membuat fungsi terjadwal, gunakan functions.pubsub.schedule('your schedule').onRun((context)). Misalnya, untuk menjalankan fungsi setiap lima menit dengan sintaks AppEngine cron.yaml, lakukan sesuatu seperti ini:

exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('This will be run every 5 minutes!');
  return null;
});

Baik sintaks Unix Crontab dan AppEngine didukung oleh Google Cloud Scheduler. Misalnya, untuk menggunakan Crontab untuk memilih zona waktu tertentu yang akan digunakan untuk menjalankan fungsi terjadwal, lakukan sesuatu seperti ini:

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;
});

Nilai untuk timeZone harus berupa nama zona waktu dari database tz. Lihat referensi Cloud Scheduler untuk mengetahui informasi selengkapnya tentang properti yang didukung.

Men-deploy fungsi terjadwal

Saat Anda menerapkan fungsi terjadwal, tugas penjadwal dan topik pub/sub terkait dibuat secara otomatis. Firebase CLI menggemakan nama topik, dan Anda dapat melihat tugas dan topik di GCP Console. Topiknya diberi nama sesuai dengan konvensi berikut:

firebase-scheduled-function_name-region

Contoh:

firebase-scheduled-scheduledFunctionCrontab-us-east1.