फ़ंक्शन शेड्यूल करें


अगर आपको फ़ंक्शन को तय किए गए समय पर चलाने के लिए शेड्यूल करना है, तो onSchedule हैंडलर का इस्तेमाल करके एक Pub/Sub विषय बनाएं. यह विषय, Cloud Scheduler का इस्तेमाल करके उस विषय पर इवेंट ट्रिगर करता है.

शुरू करने से पहले

इस समाधान का इस्तेमाल अपने Firebase प्रोजेक्ट में करने के लिए, आपका प्रोजेक्ट Blaze प्लान पर होना चाहिए. अगर आपका प्लान पहले से ही Blaze प्लान पर नहीं है, तो अपना प्लान अपग्रेड करें.

हालांकि, बिलिंग ज़रूरी है, लेकिन कुल लागत को मैनेज किया जा सकता है. ऐसा इसलिए, क्योंकि हर Cloud Scheduler जॉब की लागत 0.10 डॉलर (USD) प्रति महीना है. साथ ही, हर Google खाते के लिए तीन जॉब बिना किसी शुल्क के उपलब्ध हैं. अपने अनुमानित इस्तेमाल के आधार पर लागत का अनुमान जनरेट करने के लिए, Blaze के प्राइसिंग कैलकुलेटर का इस्तेमाल करें.

आपके प्रोजेक्ट के लिए, Pub/Sub और Cloud Scheduler एपीआई चालू होने चाहिए. ये सुविधाएं, ज़्यादातर Firebase प्रोजेक्ट के लिए पहले से ही चालू होनी चाहिए. Google Cloud Console में जाकर, इनकी पुष्टि की जा सकती है.

शेड्यूल किया गया फ़ंक्शन लिखना

Cloud Functions for Firebase में, शेड्यूल करने का लॉजिक आपके फ़ंक्शन कोड में मौजूद होता है. साथ ही, इसे डिप्लॉय करने के लिए कोई खास शर्त नहीं होती. शेड्यूल किया गया फ़ंक्शन बनाने के लिए, functions.pubsub.schedule('your schedule').onRun((context)) का इस्तेमाल करें. उदाहरण के लिए, App Engine cron.yaml सिंटैक्स का इस्तेमाल करके, हर पांच मिनट में कोई फ़ंक्शन चलाने के लिए, कुछ ऐसा करें:

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

App Engine, Unix Crontab और App Engine सिंटैक्स, दोनों के साथ काम करता है.Cloud Scheduler उदाहरण के लिए, Crontab का इस्तेमाल करके, शेड्यूल किए गए फ़ंक्शन को चलाने के लिए कोई खास टाइमज़ोन चुनने के लिए, यह तरीका अपनाएं:

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 की वैल्यू, tz डेटाबेस में मौजूद किसी समय क्षेत्र का नाम होना चाहिए. इस्तेमाल की जा सकने वाली प्रॉपर्टी के बारे में ज़्यादा जानने के लिए, Cloud Scheduler रेफ़रंस देखें.

शेड्यूल किए गए फ़ंक्शन को डिप्लॉय करना

शेड्यूल किए गए फ़ंक्शन को डिप्लॉय करने पर, उससे जुड़ी शेड्यूलर जॉब और Pub/Sub विषय अपने-आप बन जाते हैं. Firebase CLI, विषय का नाम दिखाता है. साथ ही, Google Cloud Console में जाकर, जॉब और विषय को देखा जा सकता है. विषय का नाम इस तरह रखा जाता है:

firebase-scheduled-function_name-region

उदाहरण के लिए:

firebase-scheduled-scheduledFunctionCrontab-us-east1.