2013-05-20 12 views
14

Ho bisogno di impostare il timeout su urllib2.request().impostazione del timeout su una chiamata urllib2.request()

Non utilizzo urllib2.urlopen() poiché sto utilizzando il parametro data di request. Come posso impostare questo?

+0

per impostare il timeout a livello globale, è possibile utilizzare 'socket.setdefaulttimeout()' – Mark

risposta

33

Anche se urlopen non accetta data param per POST, è possibile chiamare urlopen su un oggetto Request come questo,

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

Quale unità è 'timeout' in? –

+2

@ MöbiusStripMall Seconds ([manual] (https://docs.python.org/2/library/urllib2.html)) – carla

2

Perché non utilizzare il fantastico requests? Ti risparmierai un sacco di tempo.

Se si è preoccupati per l'implementazione, è sufficiente copiarlo nel progetto.

Es. di richieste:

>>> requests.post('http://github.com', data={your data here}, timeout=10) 
2

ancora, si può evitare di utilizzare urlopen e procedere in questo modo:

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

anche questo :)

+1

Qual è il vantaggio di non utilizzare urlopen? – NumenorForLife

Problemi correlati