bin*_*381 5 python python-requests
我正在使用requests获取URL,例如:
while True:
try:
rv = requests.get(url, timeout=1)
doSth(rv)
except socket.timeout as e:
print e
except Exception as e:
print e
Run Code Online (Sandbox Code Playgroud)
运行一段时间后,它会退出工作状态.没有例外或任何错误,就像暂停一样.然后我通过从控制台键入Ctrl + C来停止该过程.它表明该进程正在等待数据:
.............
httplib_response = conn.getresponse(buffering=True) #httplib.py
response.begin() #httplib.py
version, status, reason = self._read_status() #httplib.py
line = self.fp.readline(_MAXLINE + 1) #httplib.py
data = self._sock.recv(self._rbufsize) #socket.py
KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)
为什么会这样?有解决方案吗?
您发送给您的服务器似乎request会限制您 - 也就是说,它bytes在每个程序包之间发送的时间少于1秒(因此不会触发您的timeout参数),但速度足够慢以使其看起来卡住了.
我能想到的唯一解决方法是减少timeout参数,除非您可以通过服务器提供程序修复此限制问题.
请记住,latency在设置timeout参数时 您需要考虑,否则您的连接将被删除太快,可能根本不起作用.
| 归档时间: |
|
| 查看次数: |
4736 次 |
| 最近记录: |