我正在使用Python的Requests模块获取一批urls。我首先只想读取它们的报头,以获得实际的url和响应的大小。然后,我将获得任何通过集合的实际内容。
所以我使用'streams=True‘来延迟获取内容。这通常可以很好地工作。
但我偶尔会遇到一个url没有响应。所以我放入了timeout=3。
但它们永远不会超时。他们就这么挂着。如果我删除了'streams=True‘,它会正确超时。流和超时不能一起工作有什么原因吗?删除streams=True会强制我获取所有内容。
执行此操作:
import requests
url = 'http://bit.ly/1pQH0o2'
x = requests.get(url) # hangs
x = requests.get(url, stream=True) # hangs
x = requests.get(url, stream=True, timeout=1) # hangs
x = requests.get(url, timeout=3) # times out correctly after 3 seconds发布于 2015-01-19 06:02:00
发布于 2015-01-19 05:58:24
你会关闭你的回复吗?未关闭和部分读取的响应可以建立到同一资源的多个连接,并且站点可能对单个IP有连接限制。
https://stackoverflow.com/questions/28015146
复制相似问题