栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python请求,如何限制接收大小,传输速率和/或总时间?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python请求,如何限制接收大小,传输速率和/或总时间?

您可以尝试设置

stream=True
,然后在读取数据块时超出时间或大小限制时中止请求。

requests
版本2.3.0开始,超时也适用于流请求,因此您需要做的就是允许初始连接和每个迭代步骤都超时:

r = requests.get(..., stream=True, timeout=initial_timeout)r.raise_for_status()if int(r.headers.get('Content-Length')) > your_maximum:    raise ValueError('response too large')size = 0start = time.time()for chunk in r.iter_content(1024):    if time.time() - start > receive_timeout:        raise ValueError('timeout reached')    size += len(chunk)    if size > your_maximum:        raise ValueError('response too large')    # do something with chunk

根据需要调整超时时间。

对于

requests
版本低于2.3.0(包括此更改)的版本,您无法超时
r.iter_content()
。在块中间停止响应的服务器仍会占用连接。您必须将以上代码包装在其他超时功能中,以尽早切断长时间运行的响应。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516664.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号