सेलेरी का उपयोग करते हुए कई श्रमिकों को चलाना


11

मुझे एक ही सिस्टम में सेलेरी का उपयोग करते हुए Rabbitmq से पढ़ने और समानांतर रूप से कार्य निष्पादित करने की आवश्यकता है।

[2014-12-30 15:54:22,374: INFO/Worker-1] ...   
[2014-12-30 15:54:23,401: INFO/Worker-1] ...
[2014-12-30 15:54:30,878: INFO/Worker-1] ...
[2014-12-30 15:54:32,209: INFO/Worker-1] ...
[2014-12-30 15:54:33,255: INFO/Worker-1] ...
[2014-12-30 15:54:48,445: INFO/Worker-1] ...
[2014-12-30 15:54:49,811: INFO/Worker-1] ...
[2014-12-30 15:54:50,903: INFO/Worker-1] ...
[2014-12-30 15:55:39,674: INFO/Worker-1] ...
[2014-12-30 15:55:41,024: INFO/Worker-1] ...
[2014-12-30 15:55:42,147: INFO/Worker-1] ...

यह केवल 1 कार्यकर्ता पूरे समय चला रहा है .. यानी एक के बाद एक क्रम में। समानांतर चलाने के लिए मैं कई कार्यकर्ताओं को चलाने के लिए अजवाइन को कैसे कॉन्फ़िगर कर सकता हूं?

जवाबों:


17

मैंने अब अपने जवाब को अपडेट कर दिया है कि मार्टिन स्पैन की टिप्पणी से बच्चे के बाल काटने की प्रक्रिया के बारे में पता चलता है:

अजवाइन workerऔर worker processesविभिन्न चीजें हैं ( संदर्भ के लिए इसे पढ़ें )।

जब एक कार्यकर्ता इसे शुरू किया जाता है तो एक निश्चित संख्या में बच्चे की प्रक्रिया को जन्म देता है।

उन प्रक्रियाओं की डिफ़ॉल्ट संख्या उस मशीन पर कोर की संख्या के बराबर है।

लिनक्स पर आप के माध्यम से कोर की संख्या की जांच कर सकते हैं:

$ nproc --all

अन्यथा आप इसे स्वयं निर्दिष्ट कर सकते हैं, उदाहरण के लिए:

$ celery -A proj worker --loglevel=INFO --concurrency=2

उपर्युक्त उदाहरण में एक कार्यकर्ता है जो 2 बाल प्रक्रियाओं को स्पॉन करने में सक्षम होगा। यह आम तौर पर प्रति मशीन एक कार्यकर्ता को चलाने की सलाह दी जाती है और समवर्ती मूल्य यह परिभाषित करेगा कि समानांतर में कितनी प्रक्रियाएं चलेंगी, लेकिन यदि कई श्रमिकों को चलाने की आवश्यकता है, तो आप उन्हें नीचे दिखाए गए अनुसार शुरू कर सकते हैं:

$ celery -A proj worker -l info --concurrency=4 -n wkr1@hostname
$ celery -A proj worker -l info --concurrency=2 -n wkr2@hostname
$ celery -A proj worker -l info --concurrency=2 -n wkr3@hostname

अधिक जानकारी के लिए अजवाइन डॉक्स देखें


3
संघटक पैरामीटर थ्रेड्स नहीं चला सकता है। यह बाल प्रक्रियाओं को डिफ़ॉल्ट रूप से चलाता है, इसलिए यह समानांतर में कार्य करता है - docs.celeryproject.org/en/latest/reference/…
MartinP

कंसीलर और थ्रेड्स एक-दूसरे से कैसे संबंधित होते हैं, यदि डिफ़ॉल्ट कंसीलर मशीन के कोर की संख्या है, तो थ्रेड्स की संख्या क्या होगी? क्या यह विन्यास योग्य है?
थॉमस जॉन

@ThomasJohn मुझे लगता है कि थ्रेड के लिए डिफ़ॉल्ट संख्या अभी भी मशीन के कोर की संख्या है। आम तौर पर, आप थ्रेड-आधारित श्रमिकों के लिए --concurrency झंडा उच्च सेट करना चाहते हैं।
FragLegs

0

मुझे यह मिल गया है

http://docs.celeryproject.org/en/latest/reference/celery.html?highlight=parallel

आप कैनवस आदिमों के लिए देख सकते हैं वहाँ आप देख सकते हैं कि समानांतर निष्पादन के लिए समूह कैसे बनाएं।

वर्ग celery.group (task1 [, task2 [, task3 [, taskN]]]] समानांतर में निष्पादित किए जाने वाले कार्यों का एक समूह बनाता है।

अन्यथा एक अच्छा तरीका आईआरसी चैनल पर जाना है और उस विशेष प्रश्न को पूछना है। आम तौर पर ऐसे लोग हैं जो जानते हैं कि बहुत अच्छे हैं और वे आपकी मदद कर सकते हैं।


0

ऐसा लगता है कि आपका कार्यकर्ता केवल एक प्रक्रिया / थ्रेड चला रहा है। जब आप कार्यकर्ता को कई (समानांतर) कार्यकर्ता उदाहरणों को शुरू करने के लिए आपको केवल तर्क --concurrencyया -cतर्क जोड़ने की आवश्यकता होती है ।

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