2011-11-30 14 views
6

मेरे पास ZMQ 2.1 का उपयोग करके मध्य आकार के नेटवर्क पर एक साधारण पब-सब सेटअप है। हालांकि कुछ ग्राहक सी # बाइंडिंग का उपयोग कर रहे हैं, अन्य लोग पाइथन बाइंडिंग का उपयोग कर रहे हैं, और मेरे पास जो मुद्दा है वह दोनों के लिए समान है।जेडएमक्यू पब-सब प्रोग्राम विफलता नेटवर्क कनेक्टिविटी खोने पर विफलता

यदि मैं एक ग्राहक को चलाने वाली मशीन से नेटवर्क केबल खींचता हूं, तो मुझे एक अप्राप्य त्रुटि मिलती है जो तुरंत उस ग्राहक को समाप्त कर देती है।

import zmq 

def main(server_address, port): 

    context = zmq.Context() 
    sub_socket = context.socket(zmq.SUB) 
    sub_socket.connect("tcp://" + server_address + ":" + str(port)) 
    sub_socket.setsockopt(zmq.SUBSCRIBE, "KITH1S2") 

    while True: 

     msg = sub_socket.recv()  
     print msg 

if __name__ == "__main__": main("company-intranet", 4000) 

सी # में कार्यक्रम बस चुपचाप समाप्त हो जाता है:

यहाँ पायथन में एक ग्राहक की एक बहुत ही सरल उदाहरण (नहीं वास्तविक उत्पादन कोड है, लेकिन समस्या को पुन: करने के लिए पर्याप्त) है। अजगर में मैं कम से कम इस मिल:

अभिकथन विफल रहा है: आर सी == 0 (.... \ src \ zmq_connector.cpp: 48)

इस आवेदन क्रम एक में इसे समाप्त करने का अनुरोध किया असाधारण तरीका। अधिक जानकारी के लिए कृपया एप्लिकेशन की सहायता टीम से संपर्क करें।

मैंने गैर-अवरुद्ध संस्करणों और परामर्श संस्करणों का प्रयास किया है, लेकिन किसी भी मामले में यह तत्काल समाप्ति समस्या बनी रहती है। क्या कुछ स्पष्ट है I करना चाहिए लेकिन मैं नहीं हूं? (वह है, किसी और के लिए स्पष्ट :))।

संपादित करें:

निम्नलिखित मिला: https://zeromq.jira.com/browse/LIBZMQ-207

लगता है मानो यह है/था एक ज्ञात समस्या।

कि Github, जहां 2.1.10 के लिए एक परिवर्तन लॉग यह टिप्पणी है करने के लिए आगे लिंक लिंक:

  • की समस्या का समाधान 207, zmq_connecter.cpp में जोर विफलता: 48, जब एक अमान्य zmq_connect () स्ट्रिंग का उपयोग किया गया था, या होस्टनाम हल नहीं हो सका। Zmq_connect() कॉल अब उन दोनों मामलों में -1 देता है।

हालांकि कनेक्ट() वास्तव में recv (जाहिरा तौर पर नहीं सी #?) पायथन में एक अमान्य तर्क अपवाद है,() अभी भी विफल रहता है। यदि ग्राहक मशीन अचानक नेटवर्क खो देती है, तो वह ग्राहक बस काम करना बंद कर देगा।

तो - मैं नामित पते के बजाय आईपी पते का उपयोग करने की कोशिश करने जा रहा हूं यह देखने के लिए कि क्या यह समस्या को बाईपास करेगा या नहीं। आदर्श नहीं है, लेकिन इंस्टा-क्रैश से बेहतर है।

उत्तर

1

मूल प्रश्न: क्या कुछ स्पष्ट है जो मुझे करना चाहिए लेकिन मैं नहीं हूं?

सं

वैकल्पिक हल अब के लिए आईपी को संबोधित उपयोग करने के लिए है। यह ZMQ 2.1.x के लिए नेटवर्क डिस्कनेक्ट होने पर प्रोग्राम विफलता का कारण नहीं बनता है।

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