超时设置的Python requests.get请求的完整响应

12 浏览
0 Comments

超时设置的Python requests.get请求的完整响应

我正在收集一些网站的统计数据,为了简便起见,我使用了requests库。这是我的代码:

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秒后超时,这样循环就不会被卡住。

这个问题以前也引起过兴趣,但没有一个干净的答案。

我听说不使用requests库也许是一个好主意,但那么我应该如何获得requests库提供的好东西(元组中的那些)。

admin 更改状态以发布 2023年5月21日
0
0 Comments

使用eventlet如何呢? 如果您想在10秒钟后超时请求,即使正在接收数据,此片段将适用于您:

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

0
0 Comments

设置超时参数

r = requests.get(w, verify=False, timeout=10) # 10 seconds

版本2.25.1中的更改

以上代码将在连接或读取之间的延迟大于十秒时导致requests.get()调用超时。参见:https://requests.readthedocs.io/en/stable/user/advanced/#timeouts

0