python - 在python中将超时设置为http响应读取方法

标签 python timeout httpresponse

为了好玩,我在 python 中构建了一个下载管理器,有时与服务器的连接仍然打开,但服务器没有向我发送数据,因此(HTTPResponse 的)读取方法永远阻止了我。例如,当我从位于我所在国家/地区以外的服务器下载时,会发生这种情况,这会限制其他国家/地区的带宽。

如何为读取方法设置超时(例如 2 分钟)?

谢谢,尼尔。

最佳答案

如果你卡在某个 Python 版本上 < 2.6 ,一种(不完美但可用的)方法是做

import socket
socket.setdefaulttimeout(10.0)  # or whatever

开始使用之前 httplib .文档是 here ,并明确说明 setdefaulttimeout从 Python 2.3 开始可用——从您执行此调用到您再次调用同一函数的每个套接字都将使用 10 秒的超时时间。您可以使用 getdefaulttimeout在设置新的超时之前,如果你想保存以前的超时(包括没有)以便你可以稍后恢复它(用另一个 setdefaulttimeout )。

当您需要使用一些使用 Python 的较旧的高级库时,这些函数和习惯用法非常有用 socket s 但没有给你设置超时的好方法(当然最好使用更新的更高级别的库,例如 2.6 附带的 httplib 版本或第三方的 httplib2 在这种情况下,但这是并不总是可行,使用默认超时设置可能是一个很好的解决方法)。

关于python - 在python中将超时设置为http响应读取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2573044/

相关文章:

python - pandas DataFrames 某些列之间的差异

python - 使用 SQL Alchemy 和 pymssql 指定故障转移合作伙伴

python - Python中a -= b和a = a - b之间的区别

javascript - 如何在 node.js 的 http 响应中获取主机名?

python - 带空字符串的条件 f 字符串格式

javascript - 在 jquery ajax 中可以设置的最大超时是多少?

perl - 为什么 Perl 的 Crypt::SSLeay 在 Intel Mac OS X 机器上超时?

php - 使用异步 promise 处理 Guzzle 超时

android - 如何读取纯文本/字符串而不是 JSON 的响应

python - Flask - 返回 jsonify 与 dict 时有什么区别?