Python 2.6 urlib2 timeout issue

Parece que no puedo conseguir elurllib2 tiempo de espera para tener en cuenta. Leí, supongo, todas las publicaciones relacionadas con este tema y parece que no estoy haciendo nada malo. ¿Estoy en lo correcto? Muchas gracias por su amable ayuda.

Guión:

Necesito verificar la conectividad a Internet antes de continuar con el resto de un script. Luego escribí una función (Net_Access), que se proporciona a continuación.

Cuando ejecuto este código con mi interfaz LAN o Wifi conectada, y al verificar un nombre de host existente: todo está bien ya que no hay ningún error o problema, por lo tanto no hay tiempo de espera.Si desconecto mi conector LAN o si comparo con un nombre de host inexistente, el valor de tiempo de espera parece ser ignorado. ¿Qué hay de malo con mi código por favor?

Alguna información:

Ubuntu 10.04.4 LTS (ejecutándose en una VM VirtualBox v4.2.6, el SO Host es MAC OS X Lion)cat /proc/sys/kernel/osrelease: 2.6.32-42-genericPython 2.6.5

Mi código:

#!/usr/bin/env python

import socket
import urllib2

myhost = 'http://www.google.com'
timeout = 3

socket.setdefaulttimeout(timeout)
req = urllib2.Request(myhost)

try:
    handle = urllib2.urlopen(req, timeout = timeout)
except urllib2.URLError as e:
    socket.setdefaulttimeout(None)
    print ('[--- Net_Access() --- No network access')
else:
    print ('[--- Net_Access() --- Internet Access OK')

1) Trabajando, con el conector LAN enchufado

$ $ time ./Net_Access 
[--- Net_Access() --- Internet Access OK

real    0m0.223s
user    0m0.060s
sys 0m0.032s

2) El tiempo de espera no funciona, con el conector de LAN desconectado

$ time ./Net_Access 
[--- Net_Access() --- No network access

real    1m20.235s
user    0m0.048s
sys 0m0.060s

Añadido a la publicación original: resultados de la prueba (usando IP en lugar de FQDN)

Según lo sugerido por @unutbu (ver comentarios), reemplazar el FQDN en myhost con una dirección IP soluciona el problema: el tiempo de espera se toma en efecto.

Conector LAN enchufado ...
$ time ./Net_Access [--- Net_Access () --- Internet Access OK

real    0m0.289s
user    0m0.036s
sys 0m0.040s

Conector LAN desenchufado ...
$ time ./Net_Access [--- Net_Access () --- No hay acceso a la red

real    0m3.082s
user    0m0.052s
sys 0m0.024s

Esto es bueno, pero significa que el tiempo de espera solo se puede usar con IP y no con FQDN. Extraño...

¿Alguien encontró una manera de usar el tiempo de espera de urllib2 sin pasar a la resolución pre-DNS y pasar el IP a la función, o está usando el socket para probar la conexión y luego dispara urllib2 cuando está seguro de que puede alcanzar el objetivo?

Muchas gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta