The urllib2 documentation says that timeout parameter was added in Python 2.6. Unfortunately my code base has been running on Python 2.5 and 2.4 platforms.
you can set a global timeout for all socket operations (including HTTP requests) by using:
socket.setdefaulttimeout()
like this:
import urllib2
import socket
socket.setdefaulttimeout(30)
f = urllib2.urlopen('http://www.python.org/')
in this case, your urllib2 request would timeout after 30 secs and throw a socket exception. (this was added in Python 2.3)