हम रेल और इवेंटमैचिन का एक साथ उपयोग करते हैं, और यात्री के साथ उस कॉम्बो का उपयोग करते समय कुछ बहुत ही विशिष्ट सेटअप किए जाने की आवश्यकता होती है। बहुत सारे परीक्षण और त्रुटि के बाद, मुझे इवेंटमैचिन प्रारंभिकता अच्छी तरह से काम कर रही है, लेकिन मैं कोड को थोड़ा बेहतर समझना चाहता हूं। जैसा कि आप इस कोड स्निपेट में नीचे देख सकते हैं, हमारा प्रारंभकर्ता पैसेंजर के लिए जांच करता है, और तब जांच करता है कि यह EventMachine को पुनरारंभ करने से पहले एक फोर्क प्रक्रिया है या नहीं।इवेंटमैचिन और रूबी थ्रेड - वास्तव में यहां क्या चल रहा है?
if defined?(PhusionPassenger)
PhusionPassenger.on_event(:starting_worker_process) do |forked|
# for passenger, we need to avoid orphaned threads
if forked && EM.reactor_running?
EM.stop
end
Thread.new {
EM.run do
मेरा प्रश्न EM.reactor_running से संबंधित है? और ईएम.स्टॉप आदेश। अगर यात्री ने हमारी प्रक्रिया को फोर्क किया है, तो मुझे एक नए धागे में ईएम संदर्भ को पुनरारंभ करने की आवश्यकता क्यों है? अगर EM.reactor_running? सच हो जाता है, मैं किस ईएम उदाहरण का संदर्भ दे रहा हूं?
आप हमारे ब्लॉग यहाँ http://www.hiringthing.com/2011/11/04/eventmachine-with-rails.html
ग्रेट विवरण धन्यवाद। मैं अपने स्वयं के धागे में ईएम चलाने की आवश्यकता पर स्पष्ट हूं, लेकिन जब आप कहते हैं कि "ईएम लूप जिसे छोड़ा जा सकता है", वहीं मैं थोड़ा अस्पष्ट हूं। ईएम लूप कैसे "छोड़ दिया" मिलता है? मैं माता-पिता की प्रक्रिया को बंद नहीं कर रहा हूं 'ईएम, सही? – Joshua
यह वही है जो आप कर रहे हैं। आप मूल प्रक्रिया से ईएम पर संभावित रूप से बाएं बंद कर रहे हैं। माता-पिता की प्रक्रिया में ईएम लूप चलाना चाहिए, इसे भी फोर्क किया जाएगा, लेकिन आमतौर पर आप माता-पिता से छोड़े गए फ़ाइल डिस्क्रिप्टर में दिलचस्पी नहीं रखते हैं, इसलिए आप इसके बजाय स्क्रैच से शुरू करते हैं। यह देखते हुए कि यात्री स्वयं ईएम लूप चलाने की संभावना नहीं है, यह किसी और चीज की तुलना में सुरक्षा उपाय से अधिक है। – roidrage
इसी तरह की नस में, मैं रूबी-एमक्यूपी मणि के माध्यम से खरगोश के नीचे चल रहे एक वेबसाइकिल ऐप के भीतर खरगोश एमक्यू के साथ काम कर रहा हूं। पतला का अपना इवेंटमैचिन लूप जा रहा है, और मैं वर्तमान में EventMachine.next_tick का उपयोग कर रहा हूं और मेरी amqp सामग्री को करने के लिए कर रहा हूं। क्या यह सही है या क्या मुझे एएमक्यूपी का उपयोग करने के लिए अपना स्वयं का ईएम देने के लिए EventMachine.fork_reactor का उपयोग करना चाहिए? – wchrisjohnson