2014-07-16 7 views
7

मुझे कई देरी नौकरी कार्यकर्ता प्रक्रियाओं को चलाने के लिए मेरे dynos प्राप्त करने में परेशानी हो रही है।आप एक ही हेरोकू डिनो पर एकाधिक विलंबित जॉब श्रमिक कैसे चलाते हैं?

मेरे Procfile इस तरह दिखता है:

worker: bundle exec script/delayed_job -n 3 start 

और मेरे delayed_job स्क्रिप्ट डिफ़ॉल्ट मणि द्वारा प्रदान की है:

#!/usr/bin/env ruby 

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) 
require 'delayed/command' 
Delayed::Command.new(ARGV).daemonize 

जब मैं यह या तो स्थानीय स्तर पर चलाने के लिए प्रयास करें या एक Heroku dyno उस पर चुपचाप निकलता है और मैं नहीं बता सकता कि क्या हो रहा है।

foreman start 
16:09:09 worker.1 | started with pid 75417 
16:09:15 worker.1 | exited with code 0 
16:09:15 system | sending SIGTERM to all processes 
SIGTERM received 

या तो कैसे इस मुद्दे या सुझाव अन्य तरीकों से एक भी dyno यह बहुत सराहना की जाएगी पर एक से अधिक कार्यकर्ताओं चलाने के बारे में जाने के लिए के बारे में डिबग करने के लिए के साथ कोई भी मदद करते हैं।

उत्तर

12

आप एक ही dyno पर कई प्रक्रियाओं शुरू करने के लिए फोरमैन उपयोग कर सकते हैं।

सबसे पहले, अपने जेमफाइल में फोरमैन जोड़ें।

फिर अपने Procfile करने के लिए एक worker पंक्ति जोड़ें:

worker: bundle exec foreman start -f Procfile.workers 

जिसमें कहा जाता Procfile.workers एक नई फ़ाइल बनाएं:

dj_worker: bundle exec rake jobs:work 
dj_worker: bundle exec rake jobs:work 
dj_worker: bundle exec rake jobs:work 

यही पर 3 delayed_job कार्यकर्ताओं शुरू कर देंगे अपने कार्यकर्ता dyno।

0

संक्षिप्त उत्तर यह है कि आप delayed_job के साथ ऐसा नहीं कर सकते हैं। एक डिनो एक प्रक्रिया है और एक एकल देरी_job कर्मचारी एक ही प्रक्रिया पर काम करता है।

हालांकि इसके अन्य समाधान भी हैं। यदि आप साइडकीक का उपयोग करने के लिए स्विच कर सकते हैं तो आप साइडकीक श्रमिक थ्रेडिंग का उपयोग करते हुए एक ही प्रक्रिया पर कुछ श्रमिक चला सकते हैं। यहां व्यापार-बंद यह है कि आपके कर्मचारियों को थ्रेड सुरक्षित होना होगा।

इसे देखें: http://sidekiq.org/

5

करने के लिए अपने Procfile बदलने का प्रयास करें:

worker: bundle exec script/delayed_job -n 3 run

start का उपयोग पृष्ठभूमि में दो डेमॉन और फिर तुरंत बाहर निकलने का निर्माण करेगा। हेरोकू सोचता है कि आपकी प्रक्रिया दुर्घटनाग्रस्त हो गई है।

run का उपयोग श्रमिकों को अग्रभूमि में रखता है।

अद्यतन: मैं अब इस के लिए Delayed Job Worker Pool का उपयोग करता हूं।

+0

'रन' कमांड के लिए धन्यवाद! – dgilperez

+0

हां, इसके लिए सब कुछ देख रहा है। यह स्वीकार्य उत्तर होना चाहिए। –

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