5

मेरे पास एक एप है जो उत्पादन में अपाचे + यात्री के साथ चल रहा है। वर्तमान में मैं प्रारंभकर्ता में रूफस शेड्यूलर प्रारंभ करता हूं और उस प्रारंभकर्ता में डीबी से पढ़ने वाली नौकरियों को पंजीकृत करता हूं। वे अपाचे/यात्री काम यह है कि यह ऐप की कई प्रक्रिया/उदाहरण बनाता है जो शेड्यूलर को कई बार प्रारंभ करने का कारण बनता है और डुप्लिकेट नौकरियों को शेड्यूल करेगा।रेल में रूफस शेड्यूलर कार्यान्वयन 3

इसे कार्यान्वित करने का सही क्या है ताकि शेड्यूलर एक सिंगलटन ऑब्जेक्ट हो?

उत्तर

4

शायद आप अपने आवेदन के बाहर एक अलग कार्यकर्ता प्रक्रिया के रूप में रूफस शेड्यूलर को कार्यान्वित करना चाहते हैं।

इसे प्रारंभकर्ता के रूप में डालने के बजाय, मैं इसे शुरू करने वाला एक रेक कार्य लागू करता हूं।

# Rakefile 
desc "Starts the Scheduler worker" 
task :scheduler do 
    require 'path/to/your/scheduler/file' 

    scheduler.join 
end 

फिर पृष्ठभूमि में इसे शुरू करने के लिए बस rake scheduler चलाएं।


बोनस: के बाद से अपने अनुप्रयोग अब तरफ से 2 प्रक्रियाओं पक्ष की जरूरत है, फोरमैन का उपयोग अपने आवेदन के कई प्रक्रियाओं का प्रबंधन करने के। आप एक फ़ाइल Procfile बुलाया बनाकर ऐसा कर सकते हैं:

# Procfile 
web:  thin start -p 4242 
scheduler: rake scheduler 

फिर फोरमैन के साथ अपने ऐप शुरू: (gem install foreman पहले कर लें)

$ foreman start 

यह दोनों प्रक्रियाओं को एक साथ लागू करेगा।

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