Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रूबी ऑन रेल्स में साइडकीक के साथ बैकग्राउंड प्रोसेसिंग में महारत हासिल करें

<पी> साइडकीक रूबी डेवलपर्स को समय लेने वाले कार्यों को पृष्ठभूमि में ले जाकर तेज़ और प्रतिक्रियाशील वेब एप्लिकेशन बनाए रखने की अनुमति देता है।

<पी> अपने मूल में मल्टीथ्रेडिंग के साथ, साइडकीक एक साथ कई कार्यों को संसाधित कर सकता है। यह साइडकीक को रूबी या रेल अनुप्रयोगों का एक महत्वपूर्ण हिस्सा बनाता है जो भारी भार को संभालता है या ईमेल भेजने या फ़ाइलों को संसाधित करने जैसे कार्य करता है। पृष्ठभूमि प्रसंस्करण के बिना, लंबे समय तक चलने वाले कार्य आपके एप्लिकेशन के मुख्य थ्रेड को अवरुद्ध कर देंगे, जिसके परिणामस्वरूप धीमी प्रतिक्रिया समय और खराब उपयोगकर्ता अनुभव होगा।

<पी> इस पोस्ट में, हम पृष्ठभूमि नौकरियों को प्रबंधित और संसाधित करने के लिए साइडकीक का प्रभावी ढंग से उपयोग करने पर ध्यान केंद्रित करेंगे।

<पी> आइए शुरू करें!

साइडकीक की मूल बातें

<पी> संक्षेप में, साइडकीक रूबी के लिए एक पूर्ण विशेषताओं वाला पृष्ठभूमि प्रसंस्करण ढांचा है। यह आपको पृष्ठभूमि कार्यों को समवर्ती रूप से चलाने की सुविधा देता है, जो उत्तरदायी और विश्वसनीय वेब अनुप्रयोगों के लिए महत्वपूर्ण है। चाहे ईमेल भेजना हो, छवियों का आकार बदलना हो, या सीएसवी फ़ाइलों को संसाधित करना हो, साइडकीक का उपयोग करके समय लेने वाले कार्यों को पर्दे के पीछे से किया जा सकता है।

<पी> साइडकीक की वास्तुकला मल्टीथ्रेडिंग और "श्रमिकों" की अवधारणा पर बहुत अधिक निर्भर करती है। हालाँकि, Sidekiq 6.3.0 के अनुसार, Sidekiq::Worker मॉड्यूल को Sidekiq::Job के पक्ष में हटा दिया गया है क्योंकि "कार्यकर्ता" शब्दावली भ्रमित करने वाली हो सकती है:

<पी> क्या आप किसी प्रक्रिया के बारे में बात कर रहे हैं? एक धागा? एक प्रकार की नौकरी? मैं डेवलपर्स को वर्कर शब्द का उपयोग बंद करने के लिए प्रोत्साहित करता हूं।

<पी> रेडिस, बिजली की तेजी से चलने वाला इन-मेमोरी डेटाबेस, यहां एक आवश्यक भूमिका निभाता है, कतार प्रणाली के रूप में कार्य करता है जो इन पृष्ठभूमि नौकरियों को संग्रहीत करता है।

<पी> नोट: जबकि साइडकीक भंडारण के लिए रेडिस पर निर्भर है, हम इस लेख में रेडिस कॉन्फ़िगरेशन और उपयोग के विवरण में नहीं जाएंगे।

रेलवे के लिए साइडकीक की स्थापना और सेटअप

<पी> आरंभ करने के लिए, आपको रूबी संस्करण 2.5 या बाद का संस्करण और रेडिस सर्वर संस्करण 4 या बाद का संस्करण चलाना होगा।

<पी> अब आप साइडकीक रूबी रत्न स्थापित करने के लिए तैयार हैं।

<पी> अपने एप्लिकेशन के Gemfile में Sidekiq जोड़कर प्रारंभ करें:

 <पी> इसके बाद, इसे अपने प्रोजेक्ट की निर्देशिका में स्थापित करें:

 <पी> अब जब साइडकीक स्थापित हो गया है, तो आपको इसे कॉन्फ़िगर करने की आवश्यकता होगी। रेल्सएप्लिकेशन में, आप साइडकीक को अपने ActiveJob के रूप में कॉन्फ़िगर करते हैं एडॉप्टर। config/application.rb खोलें और एप्लिकेशनक्लास परिभाषा के अंदर निम्नलिखित पंक्ति जोड़ें:

 <पी> उदाहरण के लिए, आप रेडिस इंस्टेंस को इंगित करने के लिए साइडकीक इनिशियलाइज़र बनाकर साइडकीक को और कॉन्फ़िगर कर सकते हैं। यह रेल्स में एक विशेष स्क्रिप्ट है जो आपके एप्लिकेशन के प्रारंभ होने पर चलती है।

<पी> config/initializers में , sidekiq.rb नाम की एक फ़ाइल बनाएं . इस फ़ाइल के अंदर, आप विभिन्न साइडकीक कॉन्फ़िगरेशन निर्दिष्ट कर सकते हैं। उदाहरण के लिए:

 <पी> यह कॉन्फ़िगरेशन साइडकीक को स्थानीय रेडिस सर्वर से कनेक्ट करने के लिए कहता है। बेशक, उत्पादन परिवेश में, आप स्थानीय URL को अपने वास्तविक Redis सर्वर से बदल देंगे (यह पर्यावरण चर के लिए एक बेहतरीन जगह है)।

<पी> और बस इतना ही! साइडकीक को स्थापित और कॉन्फ़िगर करने के साथ, अब आप अपने रेल एप्लिकेशन की पृष्ठभूमि में नौकरियां बनाना और संसाधित करना शुरू करने के लिए तैयार हैं।

एक साइडकिक कार्य स्थापित करना

<पी> यहां बताया गया है कि आप बुनियादी साइडकीक कार्य को कैसे सेट अप और प्रारंभ करते हैं:

 <पी> वास्तव में किसी कार्य को चलाने के लिए कतारबद्ध करने के लिए, आप perform_async पर कॉल करते हैं जॉब क्लास पर विधि, इस प्रकार:

 <पी> यह पंक्ति एक नौकरी को डिफ़ॉल्ट कतार में जोड़ती है जो नौकरी उपलब्ध होते ही निष्पादित होती है। तर्क 'some_name' और 42 को प्रदर्शन विधि SomeNameForAJob में पास कर दिया जाता है निष्पादन पर.

<पी> यहां से, साइडकीक क्लाइंट कार्य को रेडिस में एक कतार में धकेलता है, और साइडकीक सर्वर उस कार्य को संसाधित करने के लिए तैयार होने पर उस कार्य को कतार से बाहर खींच लेता है।

अपना पहला साइडकिक जॉब बनाना

<पी> साइडकीक में, नौकरियों को नौकरी वर्गों द्वारा दर्शाया जाता है, और उन्हें जो कार्य करने की आवश्यकता होती है उन्हें perform में परिभाषित किया जाता है। विधि. आइए एक बुनियादी साइडकीक कार्य बनाएं:

 <पी> इस कोड स्निपेट में, हमने क्लास HelloNameJob बनाया है . इसमें दो तर्क लगते हैं:name और times . निष्पादित होने पर, यह कंसोल पर निर्दिष्ट संख्या में ग्रीटिंग प्रिंट करता है। निःसंदेह, यह एक सरल उदाहरण है। वास्तविक दुनिया के एप्लिकेशन में, perform विधि में कोई भी कोड शामिल हो सकता है जिसे आप पृष्ठभूमि में चलाना चाहते हैं।

<पी> अब अपना काम अंजाम दो. बस perform_async पर कॉल करें क्लास पर विधि और किसी भी तर्क में अपना perform पास करें विधि अपेक्षा करती है. यहां बताया गया है कि हम HelloNameJob को कैसे शेड्यूल कर सकते हैं हमने अभी बनाया है:

 <पी> इससे "हैलो, जेफ़!" प्रिंट करने का कार्य कतारबद्ध हो जाएगा। पांच बार.

<पी> यदि आपको किसी विशेष समय पर कार्य करने की आवश्यकता है, तो आप perform_in का उपयोग कर सकते हैं या perform_at तरीके. उदाहरण के लिए:

 <पी> इन उदाहरणों में, 'मेरेडिथ' को पांच मिनट में तीन बार उसका अभिवादन प्राप्त होगा, जबकि 'जेफ' को दो बार अपना अभिवादन प्राप्त करने के लिए दो दिन इंतजार करना होगा।

उन्नत साइडकीक उपयोग

<पी> साइडकीक काम को पृष्ठभूमि में उतारने तक ही सीमित नहीं है। यह उन्नत सुविधाएँ भी प्रदान करता है जो आपको नौकरी पुनः प्रयास और नौकरी प्राथमिकता सहित अपनी नौकरियों को कॉन्फ़िगर करने की अनुमति देती है।

स्वचालित नौकरी पुनः प्रयास

<पी> साइडकीक की सबसे शक्तिशाली विशेषताओं में से एक स्वचालित कार्य पुनः प्रयास है। डिफ़ॉल्ट रूप से, यदि कोई कार्य किसी अनचाहे अपवाद के कारण विफल हो जाता है, तो साइडकीक एक घातीय बैकऑफ़ के साथ कार्य को पुनः प्रयास करेगा। आप sidekiq_options निर्दिष्ट करके पुनः प्रयासों की संख्या को अनुकूलित कर सकते हैं अपनी कक्षा में इस तरह:

 <पी> इस उदाहरण में, यदि कोई कार्य विफल हो जाता है, तो साइडकीक हार मानने से पहले इसे दस बार पुनः प्रयास करेगा।

नौकरी की प्राथमिकता

<पी> नौकरी प्राथमिकताकरण एक और उन्नत सुविधा है जो साइडकीक प्रदान करता है। आप अपनी नौकरियों की प्राथमिकता को अलग-अलग कतारों को सौंपकर और प्रत्येक कतार की प्राथमिकता निर्धारित करके नियंत्रित कर सकते हैं। यहां बताया गया है कि आप किसी कार्य को परिभाषित करते समय एक कतार कैसे निर्दिष्ट कर सकते हैं:

 <पी> इस उदाहरण में, ThisJob के लिए नौकरियां क्रिटिकल कतार में रखा जाएगा. अपना साइडकीक सर्वर शुरू करते समय, आप उस क्रम को निर्दिष्ट कर सकते हैं जिसमें कतारों को संसाधित किया जाना चाहिए।

<पी> ये केवल कुछ उदाहरण हैं कि कैसे साइडकीक की उन्नत सुविधाओं का लाभ आपके पृष्ठभूमि कार्य प्रसंस्करण को बेहतर बनाने के लिए उठाया जा सकता है। साइडकीक के साथ, आपके पास यह सुनिश्चित करने के लिए उपकरण हैं कि आपकी नौकरियां कुशलतापूर्वक, विश्वसनीय रूप से और इस तरह से संसाधित की जाती हैं जो आपके एप्लिकेशन की आवश्यकताओं के लिए सबसे उपयुक्त है।

साइडकीक के साथ निगरानी और स्केलिंग

<पी> साइडकीक आपकी नौकरी प्रसंस्करण क्षमताओं की निगरानी और स्केलिंग के लिए मानक सुविधाओं के साथ आता है। एक वेब-आधारित डैशबोर्ड आपको आपकी नौकरी कतारों का वास्तविक समय दृश्य देता है। आप संसाधित और असफल नौकरियों की संख्या, साथ ही वर्तमान और अनुसूचित नौकरियों के बारे में विस्तृत जानकारी देख सकते हैं।

<पी> साइडकीक डैशबोर्ड का उपयोग करने के लिए, इसे अपनी रेल रूट फ़ाइल में माउंट करें। config/routes.rb में , जोड़ें:

 <पी> इन पंक्तियों को जोड़ने के बाद, आप अपने सर्वर पर '/sidekiq' पर नेविगेट करके डैशबोर्ड तक पहुंच सकते हैं।

AppSignal के साथ साइडकीक की निगरानी

<पी> अधिक व्यापक निगरानी के लिए, साइडकीक ऐपसिग्नल जैसे एप्लिकेशन प्रदर्शन निगरानी टूल के साथ अच्छी तरह से एकीकृत होता है। ऐपसिग्नल का साइडकीक डैशबोर्ड आपकी साइडकीक नौकरियों में विस्तृत जानकारी प्रदान करता है, जिसमें असफल और पुनः प्रयास की गई नौकरियां, कार्य अवधि और रेडिस मेमोरी उपयोग शामिल हैं।

<पी> रूबी ऑन रेल्स में साइडकीक के साथ बैकग्राउंड प्रोसेसिंग में महारत हासिल करें

<पी> जब आप अपने आवेदन को बढ़ाते हैं तो बाधाओं की पहचान करने के लिए इस प्रकार की जानकारी अमूल्य है। इसके अलावा, ऐपसिग्नल के अलर्ट आपको कतार की लंबाई जैसी विसंगतियों के शीर्ष पर बने रहने में मदद करते हैं, ताकि आप जान सकें कि आपकी कतारें कब बढ़ी हैं।

<पी> रूबी ऑन रेल्स में साइडकीक के साथ बैकग्राउंड प्रोसेसिंग में महारत हासिल करें

<पी> AppSignal को रेल्स के साथ अपने Sidekiqsetup में एकीकृत करना सरल है। ऐपसिग्नल का रूबी रत्न बिना किसी अतिरिक्त कॉन्फ़िगरेशन के साइडकीक सर्वर मिडलवेयर में सम्मिलित होता है। यह ActiveJob के साथ भी काम करता है!

<पी> आप डॉक्स में उल्लिखित सेटअप का उपयोग करके, साइडकीक एप्लिकेशन के लिए ऐपसिग्नल का भी उपयोग कर सकते हैं जो रेल पर नहीं चलता है।

एक साइडकीक उपयोग मामला

<पी> साइडकीक के लिए सबसे आम उपयोग के दो मामले एसिंक्रोनस ईमेलिंग और शेड्यूल्ड रिपोर्ट जेनरेशन हैं। आइए इनमें से एक उदाहरण पर करीब से नज़र डालें।

<पी> ईमेल, विशेष रूप से बड़े अनुलग्नकों या कई प्राप्तकर्ताओं वाले ईमेल को भेजने में काफी समय लग सकता है। पृष्ठभूमि कार्य में ईमेल भेजने को संभालकर, आपका एप्लिकेशन ईमेल संसाधित होने के दौरान उपयोगकर्ता के अनुरोधों का जवाब देना जारी रख सकता है।

<पी> रेल एप्लिकेशन में ईमेल भेजने के लिए साइडकीक जॉब का एक सरल उदाहरण यहां दिया गया है:

 <पी> इस उदाहरण में, ResetPasswordJob UserMailer का उपयोग करता है उपयोगकर्ता को पासवर्ड रीसेट ईमेल भेजने के लिए क्लास। किसी ईमेल को भेजने के लिए कतारबद्ध करने के लिए, आप ResetPasswordJob.perform_async(user_id) पर कॉल करें आपके एप्लिकेशन में कहीं और से।

<पी> हालाँकि, एक सामान्य रेल एप्लिकेशन में, आपको अक्सर ईमेल भेजने के लिए एक अलग साइडकीक जॉब बनाने की आवश्यकता नहीं होती है। रेल्स एक्शन मेलर फ्रेमवर्क प्रदान करता है, जिसका उपयोग ईमेल भेजने के लिए किया जाता है और बैकग्राउंड प्रोसेसिंग के लिए एक्टिव जॉब के साथ अच्छी तरह से एकीकृत होता है।

<पी> यहां एक उदाहरण दिया गया है कि आप पासवर्ड रीसेट ईमेल भेजने के लिए एक्टिव जॉब और एक्शन मेलर का उपयोग कैसे कर सकते हैं:

 <पी> इस उदाहरण में, deliver_later पर कॉल कर रहे हैं मेलर पर पृष्ठभूमि कार्य के रूप में भेजे जाने वाले ईमेल को स्वचालित रूप से सूचीबद्ध किया जाता है। पर्दे के पीछे, एक्टिव जॉब इन नौकरियों को प्रबंधित करने के लिए साइडकीक का उपयोग करता है।

<पी> लेकिन यदि आप अपनी नौकरियों पर अधिक नियंत्रण चाहते हैं - उदाहरण के लिए, आप पुनः प्रयास व्यवहार या कतार प्राथमिकता को अनुकूलित करना चाहते हैं - या यदि आप ऐसे कार्यों से निपट रहे हैं जो एक्शन मेलर के रूप में आसानी से ActiveJob के साथ एकीकृत नहीं होते हैं, तो अलग साइडकीकजॉब बनाना उचित है।

<पी> साइडकीक के प्रदर्शन और उपयोग में आसानी के साथ यह लचीलापन, इसे रेल अनुप्रयोगों में विभिन्न पृष्ठभूमि कार्यों को संभालने के लिए एक मूल्यवान उपकरण बनाता है।

समापन

<पी> इस पोस्ट में, हमने साइडकीक का परिचय दिया, इसकी बुनियादी बातों की खोज की, इंस्टॉलेशन और सेटअप में गोता लगाया, और उपयोगी कार्य बनाए और निष्पादित किए।

<पी> हमने साइडकीक की अधिक उन्नत सुविधाओं को भी छुआ, वास्तविक दुनिया के उपयोग के मामलों को देखा, और रूबी अनुप्रयोगों के प्रदर्शन और स्केलेबिलिटी को बेहतर बनाने में इसकी महत्वपूर्ण भूमिका पर चर्चा की।

<पी> इस परिचय से प्राप्त ज्ञान के साथ, अब आप अपने स्वयं के रेल ऐप्स में साइडकीक का अधिक प्रभावी ढंग से उपयोग शुरू करने के लिए तैयार हैं।

<पी> हैप्पी कोडिंग!

<पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें!
  1. HTML onbeforeprint ईवेंट विशेषता HTML onbeforeprint ईवेंट विशेषता

    जब कोई पेज प्रिंट होने वाला होता है या HTML दस्तावेज़ में प्रिंट डायलॉग बॉक्स दिखाई देने से पहले HTML onbeforeprint ईवेंट विशेषता ट्रिगर हो जाती है। सिंटैक्स निम्नलिखित वाक्य रचना है - <tagname onbeforeprint=”script”></tagname> आइए हम HTML onbeforeprint ईवेंट विशेषता का एक

  1. अधिकतम लंबाई चक्र जो C++ में एक बाइनरी ट्री के दो नोड्स को जोड़कर बनाया जा सकता है अधिकतम लंबाई चक्र जो C++ में एक बाइनरी ट्री के दो नोड्स को जोड़कर बनाया जा सकता है

    हमें एक बाइनरी ट्री दिया गया है। लक्ष्य दिए गए पेड़ में अधिकतम लंबाई चक्र खोजना है। हम रूटनोड से लेफ्ट सबट्री और राइट सबट्री की अधिकतम ऊंचाई का पता लगाकर ऐसा करेंगे और सबसे लंबा चक्र पाने के लिए इन अधिकतम लंबाई वाले रास्तों से जुड़ेंगे। उपरोक्त पेड़ के लिए अधिकतम लंबाई चक्र 1-2-3-4-7-6 या 1-6-7-4

  1. टिंकर में विभिन्न संदेश - पायथन टिंकर में विभिन्न संदेश - पायथन

    टिंकर अजगर का GUI मॉड्यूल है। यह विभिन्न संदेश प्रदर्शन विकल्पों का उपयोग करता है जो उपयोगकर्ता के कार्यों या चल रहे कार्यक्रम की स्थिति में परिवर्तन के जवाब में होते हैं। संदेश बॉक्स वर्ग का उपयोग विभिन्न प्रकार के संदेशों जैसे पुष्टिकरण संदेश, त्रुटि संदेश, चेतावनी संदेश आदि को प्रदर्शित करने के ल