setting the timeout on a urllib2.request() call

I need to set the timeout on urllib2.request().

I do not use urllib2.urlopen() since i am using the data parameter of request. How can I set this?


Solution 1:

Although urlopen does accept data param for POST, you can call urlopen on a Request object like this,

import urllib2
request = urllib2.Request('http://www.example.com', data)
response = urllib2.urlopen(request, timeout=4)
content = response.read()

Solution 2:

still, you can avoid using urlopen and proceed like this:

request = urllib2.Request('http://example.com')
response = opener.open(request,timeout=4)
response_result = response.read()

this works too :)