मैं एक कार्यक्रम urllib का उपयोग करता है समय-समय पर एक यूआरएल को लाने के लिए है, और मुझे रुक-रुक कर त्रुटियों की तरह देखें:I/O त्रुटि (सॉकेट त्रुटि): [errno 111] कनेक्शन अस्वीकृत
I/O त्रुटि (सॉकेट त्रुटि): [Errno 111] कनेक्शन से इनकार कर दिया।
यह 90% समय काम करता है, लेकिन आर 10% यह विफल रहता है। यदि विफल होने के तुरंत बाद fetch को पुनः प्रयास करें, तो यह सफल हो जाता है। मैं यह समझने में असमर्थ हूं कि ऐसा क्यों है। मैंने यह देखने की कोशिश की कि क्या कोई बंदरगाह उपलब्ध है, और वे हैं। कोई डीबगिंग विचार?
अतिरिक्त जानकारी के लिए, स्टैक ट्रेस है:
File "/usr/lib/python2.6/urllib.py", line 203, in open
return getattr(self, name)(url)
File "/usr/lib/python2.6/urllib.py", line 342, in open_http
h.endheaders()
File "/usr/lib/python2.6/httplib.py", line 868, in endheaders
self._send_output()
File "/usr/lib/python2.6/httplib.py", line 740, in _send_output
self.send(msg)
File "/usr/lib/python2.6/httplib.py", line 699, in send
self.connect()
File "/usr/lib/python2.6/httplib.py", line 683, in connect
self.timeout)
File "/usr/lib/python2.6/socket.py", line 512, in create_connection
raise error, msg
संपादित करें - एक Google खोज नहीं बहुत उपयोगी है, क्या मैं इसे से बाहर हो गया है कि सर्वर मैं से प्राप्त करते समय कर रहा हूँ कभी कभी कनेक्शन मना कर दिया है , मैं इसे अपने कोड में बग नहीं कैसे सत्यापित कर सकता हूं और यह वास्तव में मामला है?
क्या करता है "मैं यह देखने की कोशिश की के साथ समस्या यह है कि वापस आ जाएगी कनेक्शन वरना साथ कोई समस्या नहीं है कि वहाँ कोई बंदरगाह उपलब्ध हैं, और वे हैं। " क्या मतलब है? यदि आप एक ECONNREFUSED प्राप्त कर रहे हैं जो एक सकारात्मक प्रतिक्रिया है - कच्चे सॉकेट परत पर - रिमोट होस्ट से "मैं आपको दस्तक देता हूं लेकिन कोई भी सुन रहा नहीं है"; यह आमतौर पर एक ओवरलोडेड सर्वर से परिणाम होता है। आपका पुनः प्रयास इंगित करता है कि यह आपके 90/10% अनुपात के रूप में क्षणिक है। यह साबित करने के लिए कि यह आपका कोड नहीं है? सर्वर पोर्ट के लिए टेलनेट। कनेक्शन का प्रयास करने के लिए एक पाइथन सॉकेट लेयर रूटीन लिखें और आपको हिट/इनकार अनुपात दें। – msw