2012-03-26 11 views
5

मेरा पर्यावरण रेल 3.1 है, उसकेोकू बांस स्टैक, देरी_job_active_record, (https://github.com/collectiveidea/delayed_job) और किराया के साथ प्रयोग करना। (https://github.com/meskyanichi/hirefire) - मैं देरी_job कतार दस्तावेज देख सकता हूं, लेकिन मैं इसे उसकेोकू पर कैसे लागू करूं?मैं मजदूरों को देरी नौकरी + होकोकू के साथ नौकरियों के पूल में कैसे अलग कर सकता हूं?

मेरे पास अधिकतम कार्यों का सेट है जो हर घंटे समाप्त हो जाता है जिसे मुझे 3 श्रमिकों को समर्पित करने की आवश्यकता होती है, इसे पूरा होने में लगभग 26 मिनट लगते हैं। उस समय, कम महत्वपूर्ण पृष्ठभूमि कार्यों को जारी रखने की आवश्यकता है, शायद उन्हें समर्पित 1 कार्यकर्ता।

तो मैं नामित कतार में होने के लिए प्राथमिकता कार्यों के उस ब्लॉक को सेट करूंगा, उदा। 'घंटाटास्क', और फिर बाकी सब कुछ 'सब कुछ' के लिए एक कतार का नाम दें :)

सवाल यह है कि, मैं अपने कूकर श्रमिकों को विशिष्ट कतारों में कैसे समर्पित करूं? क्या यह दस्तावेज के अनुसार पर्यावरण चर के साथ कुछ करने के लिए है? इसे कहते हैं:

# Set the --queue or --queues option to work from a particular queue. 
$ RAILS_ENV=production script/delayed_job --queue=tracking start 
$ RAILS_ENV=production script/delayed_job --queues=mailers,tasks start 

लेकिन मैं Heroku सेटअप के साथ पर्याप्त परिचित बाहर काम करने के कैसे मेरे Heroku उत्पादन वातावरण को यह लागू करने के लिए नहीं कर रहा हूँ?

उत्तर

14

यह देरी नौकरी 3 के लिए README में बताया गया है:

डीजे 3 परिचय Resque शैली कतारों नामित जबकि अभी भी डीजे शैली प्राथमिकता बनाए रखने। लक्ष्य कार्यकर्ताओं के अलग-अलग पूलों द्वारा कार्य करने के लिए समूह को समूहबद्ध करने के लिए एक प्रणाली प्रदान करना है, जिसे अलग-अलग स्केल और नियंत्रित किया जा सकता है।

नौकरियां कतार विकल्प की स्थापना करके एक कतार को सौंपा जा सकता:

object.delay(:queue => 'tracking').method 

Delayed::Job.enqueue job, :queue => 'tracking' 

handle_asynchronously :tweet_later, :queue => 'tweets' 

स्क्रिप्ट/delayed_job एक पृष्ठभूमि प्रक्रिया है जो रोजगार के अवसर बंद काम शुरू होगा प्रबंधन करने के लिए इस्तेमाल किया जा सकता।

ऐसा करने के लिए, अपने Gemfile में मणि "daemons" जोड़ें और सुनिश्चित करें कि आप rails generate delayed_job चला चुके हैं। बंद कतारों कतार या कतारों वातावरण चर सेट करके

$ RAILS_ENV=production script/delayed_job start 
$ RAILS_ENV=production script/delayed_job stop 

# Runs two workers in separate processes. 
$ RAILS_ENV=production script/delayed_job -n 2 start 
$ RAILS_ENV=production script/delayed_job stop 

# Set the --queue or --queues option to work from a particular queue. 
$ RAILS_ENV=production script/delayed_job --queue=tracking start 
$ RAILS_ENV=production script/delayed_job --queues=mailers,tasks start 

कार्य:

फिर आप निम्न कर सकते हैं।

worker1: QUEUE=tracking rake jobs:work 
worker2: QUEUES=mailers,tasks rake jobs:work 

और उन्हें अलग-अलग पैमाने:

heroku ps:scale worker1=2 worker2=1 

आदि

+0

मेरा सवाल यह है कि यदि मैं उसकेोकू पर 4 श्रमिकों को स्केल करता हूं, तो मैं उनमें से 3 को नामित कतार को निष्पादित करने के लिए कैसे सेट करूं, और उनमें से 1 नामित कतार बी को काम करने के लिए, विशेष रूप से। – Dave

+0

अद्यतन उत्तर। –

+0

"प्रसंस्करण और प्रक्रिया प्रबंधन आदेश (heroku run और heroku scale) केवल सीडर स्टैक पर उपलब्ध हैं।" - मैं बांस पर हूं, सुनिश्चित नहीं हूं कि कॉन्फ़िगर कैसे करें, लेकिन मुझे लगता है कि procfile का उपयोग नहीं कर सकता? http: //devcenter.heroku।com/articles/procfile – Dave

1

मूल प्रश्न HireFire के बारे में पूछा और साथ ही

QUEUE=tracking rake jobs:work 
QUEUES=mailers,tasks rake jobs:work 

Heroku पर, अपने procfile में, दो प्रविष्टियां बना। इस समय हायरफायर नामित कतार (see HireFire website) का समर्थन नहीं करता है जो ऑटो स्केलिंग को मुश्किल बनाता है।

+0

अपडेट के रूप में, HireFire _does_ अब नामित कतारों का समर्थन करता है। मैं एक खुश HireFire ग्राहक हूँ। हायरफायर कैसे करें: http://hirefire.io/documentation/guides/rails-3- एकीकरण –

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

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