Tuesday 15 May 2012

How do Celery run multiple tasks so slow with Python? -


amqp के साथ मेरी अजवाइन शुरू

  ----------- --- अजवाइन @ tty-gazelle- व्यावसायिक v3.0.19 (चित्तीदार स्लाइड) ---- **** ----- --- * *** * - Linux-3.8.0-25-सामान्य- X86_64-के साथ-उबुंटू-13.04-रायरिंग - * - **** --- - ** ---------- [config] - ** ---------- & gt; ब्रोकर: amqp: // guest @ localhost: 5672 // - ** ----------। & Gt; ऐप: प्रोज.सेरी: 0x25ed510 - ** ----------। & Gt; संगामिति: 8 (प्रक्रियाएं) - *** --- * ---। & Gt; घटनाएं: ऑफ (इस कार्यकर्ता की निगरानी के लिए सक्षम करें) - ******* ---- --- ***** ----- [कतार] --------- -----। & Gt; अजवाइन: विनिमय: अजवाइन (प्रत्यक्ष) बाध्यकारी: अजवाइन   

एक फ़ंक्शन है:

  def प्रधान (एन): ..... .. ... लौट number_of_primes_below_n   

तो मैं अजवाइन में एक कार्य के रूप में इस समारोह बना दिया है और धारावाहिक गणना

धारावाहिक की तुलना में:

 <कोड > सीलरी के साथ समानांतर:  
  अजवाइन आयात से * जी = समूह (एक्सरेन्ज (10, 100000)] में [i (प्राइम (आई)) के लिए एक्सरेंज (10, 100000)]   

मैं एक्सरेन्ज (10, 100000) में प्रधानमंत्री (i) के लिए res = g.apply_async ()

जब मैं apply_async (), बैकेंड में टर्मिनल स्क्रीन पर दिखाई देने वाला परिणाम बहुत जल्दी की तरह:

[2013-06-20 16: 34: 56,238: जानकारी / MainProcess] टास्क proj.tasks.do_work [989be06b-c4f3-4876-9311-2f5f813857d5] 0.0166230201721s करने में सफल रहा: 99,640,324 [2013-06-20 16: 34: 56,241: जानकारी / MainProcess] टास्क proj.tasks.do_work [6eaa9b85-7ba2-4397-b6ae-cbb5668633d4] 0.0123620033264s करने में सफल रहा: 99,740,169 [2013-06-20 16: 34: 56,242 : INFO / MainProcess] कार्य प्रोजे। टास्क .do_work [1f5f6302-94a3-4937-9914-14690d856a5d] 0.00850105285645s करने में सफल रहा: 99,780,121 [2013-06-20 16: 34: 56,244: जानकारी / MainProcess] टास्क proj.tasks.do_work [b3735842-a49c-48a3-8a9e-fab24c0a6c23] 0.0102620124817s करने में सफल रहा: 99,820,081 [2013-06- 20 16: 34: 56,245: आईएनओओ / मेनप्रक्रिया] टास्क प्रोज। टास्क। ड़ॉओववर्क [98 ईके 31 ए-52 एब-4752-9 2 एएफ-6956 सी 0 ए 6 एफ -130] 0.00973200798035 एस में सफल हुआ: 99880036 [2013-06-20 16: 34: 56,245: सूचना / मेनप्रक्रिया] टास्क proj.tasks.do_work [011a1e99-b307-480b-9765-b1a472dbfa8c] 0.0115168094635s करने में सफल रहा: 99,800,100 [2013-06-20 16: 34: 56,245: जानकारी / MainProcess] टास्क proj.tasks.do_work [f3e3a89f-de79- 4ab0-aab7-0a71fe2ab2f7] 0.010409116745s करने में सफल रहा: 99,840,064 [2013-06-20 16: 34: 56,246: जानकारी / MainProcess] टास्क proj.tasks.do_work [61baef04-03c2-4810-bf6a-ae7aa75b80b4] 0.0112910270691s करने में सफल रहा: 99860049

लेकिन जब मैं परिणाम के साथ अजवाइन में प्राप्त करना चाहूँगा

  res.get ()   

यह बहुत बहुत चलाता है धीमी, धारावाहिक से बहुत धीमी है समस्या क्या है? क्या ऐसा इसलिए है क्योंकि अजवाइन समूह से मिलने वाला परिणाम धीमा है? मैं कैसे समस्या का समाधान कर सकता हूं?

यदि आप res.get () ऑपरेशन के समय में आप नोटिस करेंगे मुझे आशा है कि यह सच है), यह हमेशा 500 एमएस के बारे में है इसका कारण यह है कि asyncResult.get के परिणामस्वरूप प्रत्येक N मिलीसेकंडों के लिए मतदान किया जाता है। आप प्राप्त, अंतराल के लिए अतिरिक्त पैरामीटर प्रदान करके इसे समायोजित कर सकते हैं:

  res.get (अंतराल = 0.005)   

आप अधिक जानकारी प्राप्त कर सकते हैं और चेतावनी दीजिए, सीलरी आरपीसी जैसी संचार के लिए सबसे अच्छा समाधान नहीं है, क्योंकि परिणामों के लिए मतदान में बड़ी कार्यक्षमता हिट होती है



No comments:

Post a Comment