From: News123 on
Hi,


I'd like to write a function, that knows when the 'internet' is reachable.

My setup is a windows7 host with a wireless USB modem. The modem might
connect / disconnect any time.

I thought I write a small function just checking whether I can fetch a url.
######### script starts
import time,urllib2

myurl = "http://www.mysite.com" # or "www.google.com" or whatever you like

while True:
connected = False
try:
urllib2.urlopen(myurl)
connected = True
except urllib2.URLError as e:
print "urlerr %s" % e
print "connected",connected
time.sleep(1)
########## end of script

if the network is connected when I start the script the first time after
reboot, then I receive
> connected True
As expected

If the network is disconnected when I start the script the first time
after reboot, then I receive
> urlerr <urlopen error [Errno 11004] getaddrinfo failed>
> connected False
as expected

Things are getting weired, when my USB wireless modem connects after
I started my script:

It happens, that I just continue to receive:
> urlerr <urlopen error [Errno 11004] getaddrinfo failed>
> connected False

however when I use a windows cmd window and I start
"ping www.mysite.com", then my python script recovers and reports
> connected True

My perhaps false conclusion is, that getaddrinfo() is not retrying to
resolve an IP address, when it failed once.

Is this behaviour known? Can this really be possible?
I can reproduce this issue. not every time, but rather often.

If yes, is there any way to force a new host name lookup under windows?


What else could I be doing wrong?


Thanks a lot in advance for any ideas


N