वितरित कार्य कतार (एक्स। सेलेरी) बनाम क्रॉस्टैब स्क्रिप्ट


92

मुझे 'वितरित कार्य कतारों' के उद्देश्य को समझने में परेशानी हो रही है। उदाहरण के लिए, अजगर का अजवाइन पुस्तकालय

मुझे पता है कि अजवाइन, अजगर ढांचे में, आप निष्पादित होने के लिए कार्यों के लिए समयबद्ध खिड़कियां सेट कर सकते हैं। हालाँकि, यह आसानी से एक अजगर स्क्रिप्ट में निर्देशित एक लाइनक्स क्रॉस्टैब में भी किया जा सकता है।

और जहां तक ​​मुझे पता है, और अपने खुद के django-celery वेबपैप्स से दिखाया गया है, अजवाइन सिर्फ एक कच्चे crontab की स्थापना की तुलना में बहुत अधिक RAM मेमोरी का उपभोग करता है। अपेक्षाकृत छोटे ऐप के लिए कुछ सौ एमबी का अंतर।

क्या कोई इस भेद से मेरी मदद कर सकता है? शायद एक उच्च स्तर की व्याख्या कैसे कार्य कतार / crontabs सामान्य रूप से काम करती है, यह भी अच्छा होगा।

धन्यवाद।

जवाबों:


131

यह निर्भर करता है कि आप अपने कार्यों को क्या करना चाहते हैं, यदि आपको उन्हें वितरित करने की आवश्यकता है, और आप उन्हें कैसे प्रबंधित करना चाहते हैं।

एक Crontab हर N अंतराल पर एक स्क्रिप्ट निष्पादित करने में सक्षम है। यह चलता है, और फिर लौटता है। अनिवार्य रूप से आपको प्रत्येक अंतराल में एक ही निष्पादन मिलता है। आप बस एक crontab को एक django प्रबंधन कमांड को निष्पादित करने और पूरे django वातावरण तक पहुंच प्राप्त करने के लिए निर्देशित कर सकते हैं, इसलिए अजवाइन वास्तव में आपकी मदद नहीं करता है।

संदेश पंक्ति की सहायता से, अजवाइन मेज पर लाती है, कार्य वितरित किए जाते हैं। कई सर्वर श्रमिकों के पूल में शामिल हो सकते हैं और प्रत्येक को दोहरी हैंडलिंग के डर के बिना एक कार्य आइटम प्राप्त होता है। जैसे ही यह तैयार होता है किसी कार्य को निष्पादित करना संभव है। क्रोन के साथ, आप न्यूनतम एक मिनट तक सीमित हैं।

एक उदाहरण के रूप में, कल्पना करें कि आपने अभी एक नया वेब एप्लिकेशन लॉन्च किया है और आप सैकड़ों साइन अप प्राप्त कर रहे हैं जिनके लिए प्रत्येक उपयोगकर्ता को एक ईमेल भेजने की आवश्यकता होती है। ईमेल भेजना एक लंबा समय ले सकता है (तुलनात्मक रूप से) इसलिए आप तय करते हैं कि आप कार्यों के माध्यम से सक्रियण ईमेल संभाल लेंगे।

यदि आप क्रोन का उपयोग कर रहे थे, तो आपको यह सुनिश्चित करना होगा कि हर मिनट क्रोन उन सभी ईमेलों को संसाधित करने में सक्षम हो, जिन्हें भेजने की आवश्यकता है। यदि आपके पास कई सर्वर हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि आप एक ही उपयोगकर्ता को कई सक्रियण ईमेल नहीं भेज रहे हैं - आपको किसी प्रकार के सिंक्रनाइज़ेशन की आवश्यकता है।

अजवाइन के साथ, आप कतार में एक कार्य जोड़ते हैं। आपके पास प्रति सर्वर कई कार्यकर्ता हो सकते हैं ताकि आप पहले से ही क्रोनजॉब के आगे बढ़ गए हों। आपके पास कई सर्वर भी हो सकते हैं जिससे आप और भी अधिक स्केल कर सकते हैं। सिंक्रनाइज़ेशन को 'कतार' के भाग के रूप में संभाला जाता है।

आप अजवाइन को क्रोन प्रतिस्थापन के रूप में उपयोग कर सकते हैं लेकिन यह वास्तव में इसका प्राथमिक उपयोग नहीं है। इसका उपयोग एक वितरित क्लस्टर में अतुल्यकालिक कार्यों से खेती के लिए किया जाता है।

और निश्चित रूप से, अजवाइन में उन विशेषताओं की एक बड़ी सूची है जो क्रोन नहीं करती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.