1. ホーム
  2. パイソン

[解決済み】pythonのrequests.get entire responseのタイムアウトについて

2022-04-01 06:26:04

質問

私はウェブサイトのリストの統計を収集しており、簡単のためにそれを要求するために使用しています。以下は私のコードです。

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秒後にタイムアウトさせ、ループが行き詰まらないようにします。

この質問は関心を持たれています 以前 しかし、どの回答もすっきりしていない。素敵な答えを得るために、私はこれにいくつかの懸賞金をかけるつもりです。

リクエストは使わない方がいいという話も聞きますが、じゃあリクエストのいいところはどうやって手に入れればいいんですか?(タプルの中のもの)

どのように解決するのか?

イベントレットを使うのはどうでしょうか?もし、データを受信していても10秒後にタイムアウトさせたい場合は、このスニペットを使用します。

import requests
import eventlet
eventlet.monkey_patch()

with eventlet.Timeout(10):
    requests.get("http://ipv4.download.thinkbroadband.com/1GB.zip", verify=False)