2013-05-20 11 views
14

urllib2.request()にタイムアウトを設定する必要があります。urllib2.request()呼び出しでタイムアウトを設定する

私はdataのパラメータをrequestとしているので、私はurllib2.urlopen()を使用しません。どうすれば設定できますか?

+0

タイムアウトをグローバルに設定するには、 'socket.setdefaulttimeout()'を使用してください。 – Mark

答えて

33

urlopenPOSTためdataのparamを受け入れていますが、あなたがこのようなRequestオブジェクトにurlopenを呼び出すことができ、

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

'timeout'は何単位ですか? –

+2

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

2

なぜ素晴らしいを使用しないでくださいrequests?多くの時間を節約できます。

配備が心配な方は、プロジェクトにコピーしてください。

例:

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

まだ、あなたもまた、urlopenを使用して回避し、次のように進むことができます:

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

+1

urlopenを使用しない利点は何ですか? – NumenorForLife

+1

@ jsc123: 'opener'は' build_opener() 'を使っていくつかのリクエストのパラメータを設定できるようになっているようです(http:// ru。 stackoverflow.com/a/463620/23044)。また、複数のスレッドを使用する場合( 'urlopen()'グローバルデータを使用する場合)、明示的な 'opener'を作成する必要があります。 – jfs

関連する問題