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


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

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

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

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

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

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

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

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 का रेफ़रंस देखें.

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

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

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

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

firebase-scheduled-scheduledFunctionCrontab-us-east1.