2014-07-18 11 views
5

मेरे पास एक फ्लास्क ऐप है जो HTTP अनुरोध स्वीकार करता है। जब कुछ HTTP अनुरोध आते हैं, तो मैं ज़ीरोम स्ट्रीम पर एक संदेश ट्रिगर करना चाहता हूं। मैं ज़ीरोम स्ट्रीम को हर समय खोलना चाहता हूं। मैं सोच रहा हूं कि ऐसा करने का उचित तरीका क्या है। चूंकि उत्पादन में फ्लास्क के साथ बंदूक का उपयोग करने की सिफारिश की जाती है, इसका मतलब यह नहीं है कि फ्लास्क ऐप के कई उदाहरण होंगे, और यदि मैं फ्लास्क ऐप के समान स्थान पर ज़ीरोम कनेक्शन डालता हूं, तो उनमें से केवल एक ही होगा कनेक्ट करने में सक्षम, और अन्य असफल हो जाएंगे।उत्पादन में ज़ीरोम के साथ फ्लास्क का उपयोग करने का उचित तरीका क्या है?

उत्तर

0

ज़ीरोएमक्यू विभिन्न धागे में संदर्भ का पुन: उपयोग नहीं करेगा। वही सॉकेट पर लागू होता है।

यदि आप सॉकेट को विशेष रूप से कार्यकर्ता में एक थ्रेड द्वारा उपयोग करते हैं, तो आप सॉकेट का पुन: उपयोग कर सकते हैं।

वैसे भी, मैं प्रत्येक अनुरोध के साथ नया संदर्भ और सॉकेट बनाने के साथ शुरू करूंगा और देख सकता हूं कि ज़ीरोएमक्यू कनेक्शन साझा करने की जटिलताओं में जाने की आवश्यकता है। ज़ीरोएमक्यू की स्थापना अक्सर तेज होती है।

0

क्या आपके ऐप connect() -ing में ZMQ सॉकेट है, या यह bind() -ing है? यदि आपके ऐप को क्लाइंट माना जाता है और यह कनेक्ट हो रहा है, तो कई उदाहरण बिना किसी समस्या के कनेक्ट हो सकते हैं। यदि इसे सर्वर माना जाता है और यह बाध्यकारी है, तो हाँ, आपको समस्याएं आती हैं ... लेकिन आपके मामले में, ऐसा लगता है कि आपको अपने फ्लास्क ऐप को अधिक क्षणिक होने पर विचार करना चाहिए, और इस प्रकार ग्राहक, और दूसरा अंत होना चाहिए अधिक विश्वसनीय, और इस प्रकार सर्वर।

लेकिन कोड के बिना वास्तव में कोई ठोस सलाह देना मुश्किल है, केवल इतना ही है कि मैं आपके द्वारा दी गई छोटी जानकारी से इंटिट कर सकता हूं।

3

मैं ज़ीरोमक संदर्भ और सॉकेट ऑब्जेक्ट्स को स्टोर करने के लिए threading.local() ऑब्जेक्ट का उपयोग करता हूं।

इस तरह से मैं थ्रेड के अंदर पहले से जुड़े जुड़े सॉकेट का पुनः उपयोग कर सकता हूं, जबकि प्रत्येक थ्रेड को अपनी सॉकेट ऑब्जेक्ट्स सुनिश्चित करना होगा।

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

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