2012-11-18 27 views
49

का उपयोग करने के लिए पेशेवरों और विपक्ष वर्तमान में मैं अजगर परियोजना पर काम कर रहा हूं जिसके लिए कुछ पृष्ठभूमि नौकरियों को लागू करने की आवश्यकता है (ज्यादातर ईमेल भेजने और भारी डेटाबेस अपडेट के लिए)। मैं कार्य ब्रोकर के लिए रेडिस का उपयोग करता हूं। तो इस बिंदु पर मेरे पास दो उम्मीदवार हैं: Celery और RQ। मुझे इन नौकरी कतारों के साथ कुछ अनुभव था, लेकिन मैं आपको लोगों से इस टूल का उपयोग करने का अनुभव साझा करने के लिए कहना चाहता हूं। इसलिए।सेलेरी बनाम आरक्यू

  1. सेलेरी बनाम आरक्यू का उपयोग करने के लिए कौन से पेशेवर और विपक्ष।
  2. सेलेरी बनाम आरक्यू का उपयोग करने के लिए उपयुक्त परियोजनाओं/कार्य के किसी भी उदाहरण।

अजवाइन बहुत जटिल लग रहा है, लेकिन यह पूर्ण विशेषताओं समाधान है। दरअसल मुझे नहीं लगता कि मुझे इन सभी सुविधाओं की ज़रूरत है। दूसरी तरफ RQ से बहुत ही सरल (उदाहरण, विन्यास, एकीकरण) है, लेकिन ऐसा लगता है कि यह कुछ उपयोगी सुविधाओं का अभाव है (उदाहरण, कार्य पलट, कोड स्वत: पुन: लोड)

+2

दुर्भाग्यवश, इस तरह का प्रश्न इस साइट के प्रारूप में फिट नहीं है, [एफएक्यू # डोंटस्क] देखें। इन तरह के प्रश्न अस्पष्ट उत्तरों का कारण बनते हैं जो बहुत जल्दी से पुराने होते हैं। अगर हम आपको किसी विशिष्ट समस्या से मदद कर सकते हैं, तो एक और सवाल पोस्ट करने के लिए स्वतंत्र महसूस करें! –

+0

बीटीडब्ल्यू मुझे लगता है जैसे आप कार्यों को निरस्त कर सकते हैं, यहां तक ​​कि आरक-डैशबोर्ड –

उत्तर

60

यह वही प्रश्न है जो मुझे इस सटीक प्रश्न का उत्तर देने का प्रयास करते समय मिला है। यह शायद व्यापक नहीं है, और कुछ बिंदुओं पर भी गलत हो सकता है।

संक्षेप में, आरक्यू को चारों ओर सरल बनाने के लिए डिज़ाइन किया गया है। अजवाइन को और अधिक मजबूत होने के लिए डिज़ाइन किया गया है। वे दोनों उत्कृष्ट हैं।

  • प्रलेखन। RQ's documentation जटिल होने के बिना व्यापक है, और परियोजना की समग्र सादगी को प्रतिबिंबित करता है - आप कभी भी खो या उलझन में महसूस नहीं करते हैं। Celery's documentation भी व्यापक है, लेकिन जब आप पहली बार चीजों को सेट अप कर रहे हैं तो इसे फिर से देखने की उम्मीद है क्योंकि
  • निगरानी करने के लिए बहुत सारे विकल्प हैं। Celery's Flower और RQ dashboard दोनों सेटअप करने के लिए बहुत ही सरल हैं और आपको कम से कम 90% जानकारी जो आप कभी चाहें

  • ब्रोकर समर्थन। सेलेरी स्पष्ट विजेता है, आरक्यू केवल रेडिस का समर्थन करता है। इसका मतलब है "ब्रोकर क्या है" पर कम दस्तावेज है, लेकिन इसका मतलब यह भी है कि यदि आप Redis अब आपके लिए काम नहीं करते हैं तो आप भविष्य में ब्रोकरों को स्विच नहीं कर सकते हैं। उदाहरण के लिए, Instagram considered both Redis and RabbitMQ with Celery। यह महत्वपूर्ण है क्योंकि विभिन्न दलालों की अलग-अलग गारंटी होती है उदा। Redis (लेखन के रूप में) गारंटी नहीं दे सकता है कि आपके संदेश वितरित किए गए 100% हैं।

  • प्राथमिकता कतार। आरक्यू प्राथमिकता कतार मॉडल सरल और प्रभावी है - workers read from queues in order। सेलेरी को विभिन्न कतारों से उपभोग करने के लिए कई श्रमिकों को कताई की आवश्यकता होती है। दोनों दृष्टिकोण

  • ओएस समर्थन काम करते हैं। सेलेरी यहां स्पष्ट विजेता है, क्योंकि आरक्यू केवल उन सिस्टम पर चलता है जो fork उदा। यूनिक्स सिस्टम

  • भाषा समर्थन। आरक्यू केवल पायथन का समर्थन करता है, जबकि सेलेरी आपको एक भाषा से अलग भाषा में

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

  • सबटास्क समर्थन। सेलेरी subtasks का समर्थन करता है (उदाहरण के लिए मौजूदा कार्यों के भीतर से नए कार्यों को बनाने)। मुझे नहीं पता कि आरक्यू

  • समुदाय और स्थिरता है। सेलेरी शायद अधिक स्थापित है, लेकिन वे दोनों सक्रिय परियोजनाएं हैं। लेखन के रूप में, अजवाइन ~ Github पर 3500 सितारों है, जबकि RQ है ~ 2000 और दोनों परियोजनाओं सक्रिय विकास

दिखाने मेरी राय में, अजवाइन के रूप में जटिल रूप में अपनी प्रतिष्ठा पर विश्वास करना आप जन्म दे सकता है नहीं है, लेकिन आप करेंगे आरटीएफएम करना है।

तो, कोई भी आरक्यू के लिए (तर्कसंगत रूप से अधिक पूर्ण विशेषताओं) सेलेरी का व्यापार करने के इच्छुक क्यों होगा? मेरे दिमाग में, यह सब सादगी के लिए नीचे आता है। खुद को Redis + यूनिक्स में प्रतिबंधित करके, आरक्यू सरल दस्तावेज, सरल कोडबेस, और एक सरल एपीआई प्रदान करता है। इसका मतलब है कि आप (और आपके प्रोजेक्ट में संभावित योगदानकर्ता) आपके कामकाजी मेमोरी में कार्य कतार प्रणाली के बारे में विवरण रखने के बजाय, जिस कोड की आप परवाह करते हैं उस पर ध्यान केंद्रित कर सकते हैं। हम सभी के पास एक सीमा है कि हमारे सिर में एक बार में कितने विवरण हो सकते हैं, और वहां कार्य कतार विवरण रखने की आवश्यकता को हटाकर आरक्यू आपको उस कोड पर वापस आ सकता है जिसकी आप परवाह करते हैं। यह सादगी अंतर-भाषा कार्य कतार, विस्तृत ओएस समर्थन, 100% विश्वसनीय संदेश गारंटी, और आसानी से संदेश दलालों को स्विच करने की क्षमता जैसी सुविधाओं की कीमत पर आता है।

1

अजवाइन कि जटिल नहीं है। इसके मूल में, आप tutorials से कदम विन्यास द्वारा कदम करते हैं, एक celery उदाहरण बनाने के तो my_task.delay(*args, **kwargs) साथ काम चलाने @celery.task के साथ अपने समारोह को सजाने।

अपने खुद के आकलन से परखने के बाद, ऐसा लगता है कि आप (key) सुविधाओं की कमी या आसपास कुछ अतिरिक्त फांसी होने के बीच चयन करने के लिए है। यह मेरी किताब में पसंद का बहुत मुश्किल नहीं है।

+16

के साथ मैं पूरी तरह से आपके मूल्यांकन से असहमत हूं। मैंने दस्तावेज़ों और कई ब्लॉग पोस्टों को पढ़ने के बाद भी, मेरे डेबियन सर्वर पर सफलतापूर्वक चलने के लिए कुछ हफ्तों तक संघर्ष किया। मेरी मुख्य समस्या यह थी कि अगर आपको अपनी कॉन्फ़िगरेशन में कुछ गड़बड़ है, तो सेलरी समस्या के बारे में * कोई * प्रतिक्रिया प्रदान नहीं करेगी। और जब मैं अंततः इसे काम कर रहा था, तो मैंने सेलेरी स्टैक में कुछ प्रकार ओएस ओएसआरआरर गहराई से शुरू कर दिया। मैंने गिथब पर एक मुद्दा पोस्ट किया लेकिन कोई भी मदद नहीं कर सका। मैं फिर से दस-पैर ध्रुव के साथ सेलेरी को नहीं छूंगा। – William

संबंधित मुद्दे