2011-02-01 12 views
5

मैंने ऑडियो स्ट्रीमिंग सर्वर का एक सेट विकसित किया है, वे सभी ट्विस्टेड का उपयोग कर रहे हैं, और वे निश्चित रूप से पायथन में हैं। वे काम करते हैं, लेकिन एक समस्या मुझे परेशान करती रहती है, जब मुझे चल रहे सर्वर में कुछ बग मिलती हैं, या मैं सर्वर में कुछ जोड़ना चाहता हूं, तो मुझे उन्हें रोकने और शुरू करने की आवश्यकता है। HTTP सर्वर के विपरीत, जब भी वे स्ट्रीमिंग सर्वर के साथ ठीक नहीं है, ठीक है, ठीक है। एक बार जब मैं अपने स्ट्रीमिंग सर्वर को पुनरारंभ करता हूं, तो इसका मतलब है कि मेरे उपयोगकर्ताओं को डिस्कनेक्शन का सामना करना पड़ेगा।ट्विस्ट सर्वर कैसे बनाएं जो पायथन में हॉट कोड स्वैप करने में सक्षम हैं?

मैंने एक मैनहोल स्थापित करने का प्रयास किया (ट्विस्ट सर्वर के लिए एक एसएसएच सेवा, आप लॉगिन कर सकते हैं और कुछ करने के लिए कंसोल में पायथन कोड टाइप कर सकते हैं), और कंसोल से कनेक्ट करें, फ्लाई पर पायथन मॉड्यूल को पुनः लोड करें। यह कभी-कभी काम करता है, लेकिन नियंत्रण में मुश्किल है। आप कभी नहीं जानते कि सर्वर में पुरानी कक्षा के कितने उदाहरण हैं, और उनमें से कुछ तक पहुंचने में मुश्किल हो सकती है, और कक्षा के रिश्ते बहुत जटिल होंगे। साथ ही, यह कुछ स्थितियों में काम कर सकता है, लेकिन कभी-कभी आपको वास्तव में सर्वर को पुनरारंभ करने की आवश्यकता होती है, उदाहरण के लिए, आप चयनकर्ता रिएक्टर के साथ सर्वर चला रहे हैं, और आप इसके बजाय एपोल रिएक्टर के साथ इसे चलाने के लिए चाहते हैं, तो आपको इसे पुनरारंभ करना होगा। एक और उदाहरण, जब स्मृति उपयोग बहुत अधिक हो जाता है, तो आपको भी उन्हें पुनरारंभ करना होगा।

ऐसी प्रणाली बनाने के लिए, मेरे पास एक विचार है मेरे सिर में, मुझे लगता है कि उन कनेक्शनों और डेटा को किसी प्रक्रिया से दूसरे में सौंपना संभव है। उदाहरण के लिए:

हमारे पास ब्रॉडकास्टिंग नामक एक सर्वर है, और चल रहा उदाहरण rev.123 के अंतर्गत है, और हम इसे rev.124 के साथ बदलना चाहते हैं।

Broadcasting rev.123 is running.... 
Startup Broadcasting rev.124 .... 
Broadcasting rev.124 is stand by 
Hand over connections from instance of rev.123 to instance of rev.124 
Stop Broadcasting rev. 123 instance 

क्या यह संभव है? मुझे नहीं पता कि जीवनभर सॉकेट हैंडल प्रक्रियाओं के लिए बाध्य हैं या नहीं, मैंने सोचा कि निर्माता प्रक्रिया को मारने पर प्रक्रिया द्वारा बनाए गए सॉकेट बंद हो जाएंगे, लेकिन मुझे यकीन नहीं है। यदि यह संभव है, तो ऐसे प्रकार के हॉट कोड स्वैपिंग तंत्र को डिजाइन करने के लिए कोई दिशानिर्देश या लेख हैं? और क्या कुछ ऐसा हो सकता है जो मैं चाहता हूं कि मुड़ने के लिए पहले से ही किया जा सके?

धन्यवाद।

+0

उल्लेख करना भूल गया, मैं उन सभी सर्वर को लिनक्स सेंटोस के तहत चलाता हूं। –

उत्तर

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