2012-02-28 17 views
16

मैं देरी_job का उपयोग कर रहा हूं और एक नए बीफियर सर्वर पर ले जाया गया हूं। तो अब मैं समानांतर नौकरियां चलाने के लिए चाहूंगा, जैसा अब I have the POWER! है, लेकिन इस बात पर उलझन में है कि देरी_job एकाधिक समांतर कतार चला सकता है या नहीं?Delayed_job - एकाधिक समानांतर कतार?

This question ने सुझाव दिया कि नामित कतार हैं, लेकिन क्या ये सभी एक टेबल से भागते हैं और इस प्रकार अनुक्रमिक हैं?

नीचे @ जेसे वोल्गामॉट सुझाव देता है कि आप प्रत्येक कतार के लिए एक टेबल बना सकते हैं जो तब पैरारल में चलाएगा।

क्या किसी ने ऐसा किया है और क्या वे मुझे यह बता सकते हैं कि यह कैसे किया जाता है?

+0

नहीं, एकाधिक कर्मचारी अनुक्रमिक अनुक्रमिक में काम नहीं करते हैं। यहां तक ​​कि यदि कतार सभी एक तालिका में हैं, तो कर्मचारी 'run_at',' प्राथमिकता 'द्वारा क्रमबद्ध जॉब्स कतार का चयन करने के लिए एसक्यूएल क्वेरी का उपयोग करेंगे। इसलिए कई कर्मचारी समानांतर में उस तालिका के विभिन्न हिस्सों पर काम कर सकते हैं। – lulalala

+0

मैं उत्तर के बारे में भूल गया, इसलिए मैंने जो जोड़ा और उसे स्वीकार कर लिया। मैंने दूसरे को भी ऊपर उठाया ... – slotishtype

उत्तर

11

उत्पादन में बंडलर के साथ:

RAILS_ENV=production bundle exec script/delayed_job -n 4 start

या बंडलर बिना

ruby script/delayed_job -n 4 start

+1

मैंने -i विकल्प की कोशिश नहीं की है, लेकिन फिर भी जब आप एक कतार निर्दिष्ट कर रहे हैं तो -n विकल्प काम नहीं कर रहा है। आपको कई श्रमिक मिलेंगे लेकिन केवल एक कार्यकर्ता वास्तविक धागे पर लागू होगा। – Dex

+0

"-एन 4" - यह बड़ी गलती है! अंतरिक्ष के बिना -एन 4 का प्रयोग करें! उस पर कई घंटे कमर। –

+0

@AndrewRukin दस्तावेज़ीकरण स्पष्ट रूप से उल्लेख करता है -एन 2 (अंतरिक्ष के साथ ...) यहां देखें: https://github.com/collectiveidea/delayed_job#running-jobs – rept

28

यह संभव है और मैं इसे हर समय कर रहा हूं। हमारे मामले में हमें तीन अलग-अलग प्रकार की नौकरियों को प्रोसेस करने के लिए कई नौकरियों की आवश्यकता है, queue_a, queue_b, और queue_c। सिस्टम देरी_job तालिका और कतार में उचित रूप से प्रविष्टियों में प्रविष्टियां करेगा।

प्रारंभ की तरह

RAILS_ENV=production script/delayed_job -i first --queue=queue_a start 
RAILS_ENV=production script/delayed_job -i second --queue=queue_a start 
RAILS_ENV=production script/delayed_job -i third --queue=queue_b start 
RAILS_ENV=production script/delayed_job -i fourth --queue=queue_c start 

प्रत्येक कमांड कई देरी नौकरियों एक delayed_job बन जाएगा, ताकि वहाँ अब 4 समानांतर नौकरियों, उनमें से दो queue_a और queue_b और queue_c के लिए एक-एक की सेवा हो जाएगा। यहां महत्वपूर्ण बात यह है कि -i विकल्प के माध्यम से पारित पहचानकर्ता है जो इंस्टेंस नाम निर्दिष्ट करता है, और हम आवश्यकतानुसार नौकरियां शुरू और बंद कर सकते हैं।

एक और विकल्प कार्यकर्ता पूल का उपयोग करना है।

RAILS_ENV=production script/delayed_job --pool=tracking --pool=mailers,tasks:2 --pool=*:2 start 

आदेश 1 ट्रैकिंग कतार के लिए कार्यकर्ता, मेलर्स और कार्यों कतार, और किसी भी नौकरी के लिए 2 श्रमिकों के लिए 2 श्रमिकों शुरू कर देंगे।

+0

क्या आपको पता है, अगर अंतिम (किसी भी नौकरियों के लिए 2 कर्मचारी) अन्य कतारों (ट्रैकिंग, मेलर्स, कार्यों) या केवल नौकरियों से नौकरियां लेते हैं जहां कोई कतार निर्दिष्ट नहीं की गई थी? – Machisuji

+0

मुझे लगता है कि कई उदाहरण निर्दिष्ट करने के लिए यहां एक सुधार की आवश्यकता है। वाक्यविन्यास इस RAILS_ENV = उत्पादन स्क्रिप्ट/delayed_job --queue = queue_a -i one1 प्रारंभ होना चाहिए, -i और आवृत्ति नाम के बीच की जगह को नोटिस करें। – 3coins

+0

धन्यवाद, यह मेरे लिए बहुत अच्छा काम करता है ... धन्यवाद! मुझे अभी तक -n विकल्प देखने की आवश्यकता नहीं है ... – Gnana

3

आप अपनी नौकरी लांच तंत्र के रूप में रेक कार्यों का उपयोग कर रहे हैं, तो कतार वातावरण चर इस्तेमाल किया जा सकता कतार से अलग विभिन्न कार्यकर्ता नौकरियों को लॉन्च करने के लिए।

उदाहरण:

QUEUE=email rake jobs:work 
QUEUE=build_data rake jobs:work 

कतारों चर एक विशेष कार्यकर्ता के लिए कई डीजे कतारों से एक विपंक्ति करने देता है।

QUEUES=build_data,email rake jobs:work 

विशेष रूप से उपयोगी यदि आप होस्ट किए/बादल वातावरण (जैसे Heroku) आप स्क्रिप्ट/नौकरियों सीधे शुरू करने तक ही सीमित पहुँच देता उपयोग कर रहे हैं।

+0

काम नहीं कर रहा है, अगर मैं अपनी कई समांतर नौकरी कतारों को निम्नानुसार सेट करता हूं: 'QUEUES = build_data, ईमेल रेक नौकरियां: कार्य' और फिर 'QUEUE = another_data रेक नौकरियां: कार्य' –

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