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


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

वेब कंटेनर इंस्टॉल करने से पहले

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

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

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

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

'Firebase के लिए Cloud Functions' में, शेड्यूलिंग लॉजिक आपके फ़ंक्शन कोड में मौजूद होता है. इसके लिए, डिप्लॉय-टाइम की कोई खास ज़रूरत नहीं होती. शेड्यूल किया गया फ़ंक्शन बनाने के लिए, 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;
});

Unix Crontab और App Engine सिंटैक्स, दोनों क्लाउड शेड्यूलर पर काम करती हैं. उदाहरण के लिए, अगर शेड्यूल किया गया फ़ंक्शन चलाना है, तो कोई खास टाइमज़ोन चुनने के लिए 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 शेड्यूलर का रेफ़रंस देखें.

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

शेड्यूल किए गए फ़ंक्शन को डिप्लॉय करने पर, उससे जुड़े शेड्यूलर जॉब और pub/sub विषय अपने-आप बन जाते हैं. Firebase सीएलआई, विषय के नाम को दिखाता है. साथ ही, GCP कंसोल में नौकरी और विषय को देखा जा सकता है. विषय को यहां दिए गए कन्वेंशन के मुताबिक नाम दिया गया है:

Firebase के लिए शेड्यूल की गई तारीख-function_name-region

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

firebase-Scheduled-ScheduledFunctionCrontab-us-east1.