Python ライブラリを使用してrequests
、GET リクエストを作成し、次のようにタイムアウト例外 (およびここには示していない他の例外) を処理します。
import requests
timeout1=20
timeout2=40
try:
#first attempt
resp = requests.get(base_url+resource, params=payload, headers=headers,
timeout=timeout1)
except requests.exceptions.Timeout:
#timed out, retry once
try:
resp = requests.get(base_url+resource, params=payload, headers=headers,
timeout=timeout2)
return resp.json()
except requests.exceptions.RequestException as e:
#Still failed; return error code
return -1
これはほとんどの場合問題なく動作しますが、私のプログラムsocket.timeout: timed out
は をスローする代わりにエラーで完全に終了し、requests.exceptions.Timeout
これがキャッチされて処理されることがあります。
リクエスト lib がこのように動作するのはなぜですか? これをどのように処理すればよいですか?