我正在收集网站列表的统计数据,为了简单起见,我使用了请求.这是我的代码:

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

这个问题也很有趣,但没有一个答案是干净的.我会悬赏这件事以得到一个好的答案.

我听说也许不使用请求是个好主意,但是我应该如何获得请求提供的好处呢?(元组中的那些)

推荐答案

使用Eventlet怎么样?如果您想在10秒后使请求超时,即使正在接收数据,此代码段也适用于您:

import requests
import eventlet
eventlet.monkey_patch()

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

Python相关问答推荐

aiohTTP与pytest的奇怪行为

如何推迟对没有公钥的视图/表的反射?

在for循环中保存和删除收件箱

Python(Polars):使用之前的变量确定当前解决方案的Vector化操作

自动编码器和极坐标

如何在vercel中指定Python运行时版本?

在上下文管理器中更改异常类型

使用FASTCGI在IIS上运行Django频道

替换字符串中的多个重叠子字符串

如何检测背景有噪的图像中的正方形

numba jitClass,记录类型为字符串

如何删除索引过go 的lexsort深度可能会影响性能?' &>

如何在polars(pythonapi)中解构嵌套 struct ?

avxspan与pandas period_range

基于索引值的Pandas DataFrame条件填充

Pandas:将多级列名改为一级

ThreadPoolExecutor和单个线程的超时

如何更新pandas DataFrame上列标题的de值?

CommandeError:模块numba没有属性generated_jit''''

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像