Tôi có một chương trình sử dụng urllib định kỳ lấy một url, và tôi thấy không liên tục lỗi như:I/O lỗi (lỗi socket): [Errno 111] Kết nối từ chối
I/O lỗi (lỗi ổ cắm): [Errno 111] Kết nối bị từ chối.
Nó hoạt động 90% thời gian, nhưng không vượt quá 10% thời gian. Nếu thử lại tìm nạp ngay sau khi nó không thành công, nó sẽ thành công. Tôi không thể tìm ra lý do tại sao điều này là như vậy. Tôi đã cố gắng để xem nếu có bất kỳ cổng nào, và họ đang có. Bất kỳ ý tưởng gỡ lỗi nào?
Đối với thông tin bổ sung, stack trace là:
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
Edit - Một tìm kiếm google không phải là rất hữu ích, những gì tôi đã ra khỏi nó là máy chủ Tôi lấy từ đôi khi từ chối kết nối , làm thế nào tôi có thể xác minh nó không phải là một lỗi trong mã của tôi và điều này thực sự là trường hợp?
gì "Tôi đã cố gắng để xem bất kỳ cổng nào có sẵn, và chúng có sẵn. " nghĩa là? Nếu bạn đang nhận được một ECONNREFUSED đó là một phản ứng khẳng định - ở lớp socket thô - từ máy chủ từ xa nói "Tôi nghe bạn gõ nhưng không ai đang nghe"; điều này thường là kết quả từ một máy chủ bị quá tải. Thử lại của bạn cho biết rằng đây là tạm thời cũng như tỷ lệ 90/10% của bạn. Cách chứng minh đó không phải là mã của bạn? Telnet đến cổng máy chủ. Viết một thói quen lớp socket python để thử kết nối và cung cấp cho bạn tỷ lệ nhấn/từ chối. – msw