tengo un programa que utiliza urllib a buscar periódicamente una dirección URL, y veo intermitentes errores como: errorerror I/O (error de socket): [Errno 111] Conexión rechazada
I/O (error de socket): [Errno 111] Conexión rechazada.
Funciona el 90% del tiempo, pero el otro r10% falla. Si vuelve a intentar la recuperación inmediatamente después de que falla, tiene éxito. No puedo entender por qué esto es así. Traté de ver si hay puertos disponibles, y lo están. ¿Alguna idea de depuración?
Para información adicional, el seguimiento de la pila es:
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
Editar - Una búsqueda en Google no es muy útil, lo que tengo de ella es que el servidor estoy ir a buscar a veces se niega conexiones , ¿cómo puedo verificar que no es un error en mi código y este es realmente el caso?
¿Qué significa "Traté de ver si todos los puertos están disponibles, y lo son ". ¿media? Si obtiene un ECONNREFUSED que es una respuesta afirmativa (en la capa de socket sin procesar) del host remoto que dice "Te escucho tocar pero nadie está escuchando"; esto generalmente resulta de un servidor sobrecargado. Su reintento indica que esto es transitorio, al igual que su proporción de 90/10%. ¿Cómo demostrar que no es su código? Telnet al puerto del servidor. Escribe una rutina de capa de socket python para probar las conexiones y darte la proporción hit/refused. – msw