私はウェブサイトのリストに関する統計情報を収集しており、簡単にするためにリクエストを使用しています。これが私のコードです:
data=[]
websites=['http://google.com', 'http://bbc.co.uk']
for w in websites:
r= requests.get(w, verify=False)
data.append( (r.url, len(r.content), r.elapsed.total_seconds(), str([(l.status_code, l.url) for l in r.history]), str(r.headers.items()), str(r.cookies.items())) )
ここで、requests.get
ループが停止しないように 10 秒後にタイムアウトするようにします。
この質問には以前から興味があった答えはどれも明確ではありません。
リクエストを使用しないのは良い考えかもしれないと聞きましたが、それではリクエストが提供する良い機能 (タプル内の機能) をどのように取得すればよいのでしょうか。
ベストアンサー1
注: このtimeout
パラメータは、リクエストの読み込みを永久に防止するものではなく、リモート サーバーがタイムアウト値内に応答データを送信できなかった場合にのみ停止します。無期限に読み込まれる可能性があります。
をセットするタイムアウトパラメータ:
try:
r = requests.get("MYURL.com", timeout=10) # 10 seconds
except requests.exceptions.Timeout:
print("Timed out")
上記のコードでは、requests.get()
接続または読み取り間の遅延が 10 秒を超えると、呼び出しがタイムアウトになります。
パラメータtimeout
は、待機する秒数を浮動小数点数と(connect timeout, read timeout)
タプルとして受け入れます。
見るリクエスト.リクエストドキュメントだけでなくタイムアウトセクションドキュメントの「高度な使用法」セクションを参照してください。