que estoy usando Python's urllib2 para enviar un mensaje HTTP:cuelga detecta con Python urllib2.urlopen
import socket, urllib, urllib2
socket.setdefaulttimeout(15)
postdata = urllib.urlencode({'value1' : 'a string', 'value2' : 'another string'})
headers = {
'User-Agent': 'Agent',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'text/html, */*',
}
try:
request = urllib2.Request('http://www.example.com', postData, headers)
response = urllib2.urlopen(request)
except urllib2.HTTPError, e:
# Handle here
except urllib2.URLError, e:
# Handle here
except httplib.HTTPException, e:
# Handle here
De vez en cuando un problema de red da lugar a la llamada a urlopen no volver nunca. Vemos otros errores (incluidos los tiempos de espera) manejados correctamente por el bloque except y tenemos una llamada a socket.setdefaulttimeout() pero todavía hay casos en que el urlopen nunca volverá.
Sé que nunca volverá porque tenemos algunas líneas de registro en nuestro código real que se llaman antes y después, y cuando este problema ocurre, solo se realizan las llamadas anteriores y el script se cuelga para siempre.
¿Cuál es la mejor manera de detectar/manejar esto?
¿Está modificando el tiempo de espera del socket predeterminado que no funciona para usted? – jathanism
Tengo el mismo problema contigo, ¿lo has resuelto? – ajaxhe