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


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

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

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

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

आपके प्रोजेक्ट के लिए, 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.