我已经看过几篇有关使用timeout参数处理挂起请求的相关文章,但是我不确定如何诊断我的请求是否挂起或是否存在其他潜在问题。我正在流式传输一些数据并将其记录并打印到控制台。现在两次,我看到长时间没有将任何数据打印到控制台,并且在中断执行时,我得到以下堆栈跟踪
File "/home/matthew/Dropbox/pylibs/oandapy/oandapy.py", line 276, in start
for line in response.iter_lines(90):
File "/home/matthew/anaconda/lib/python2.7/site-packages/requests/models.py", line 663, in iter_lines
for chunk in self.iter_content(chunk_size=chunk_size, decode_unicode=decode_unicode):
File "/home/matthew/anaconda/lib/python2.7/site-packages/requests/models.py", line 627, in generate
for chunk in self.raw.stream(chunk_size, decode_content=True):
File "/home/matthew/anaconda/lib/python2.7/site-packages/requests/packages/urllib3/response.py", line 240, in stream
data = self.read(amt=amt, decode_content=decode_content)
File "/home/matthew/anaconda/lib/python2.7/site-packages/requests/packages/urllib3/response.py", line 187, in read
data = self._fp.read(amt)
File "/home/matthew/anaconda/lib/python2.7/httplib.py", line 543, in read
return self._read_chunked(amt)
File "/home/matthew/anaconda/lib/python2.7/httplib.py", line 585, in _read_chunked
line = self.fp.readline(_MAXLINE + 1)
File "/home/matthew/anaconda/lib/python2.7/socket.py", line 476, in readline
data = self._sock.recv(self._rbufsize)
File "/home/matthew/anaconda/lib/python2.7/ssl.py", line 246, in recv
return self.read(buflen)
File "/home/matthew/anaconda/lib/python2.7/ssl.py", line 165, in read
return self._sslobj.read(len)
我可以设置一些其他参数还是在其他地方记录有关该连接的更多信息,所以从stacktrace不清楚问题是什么。
您可以在创建Request对象或发送请求时为HTTP会话设置超时;看到这里:
超时–(可选)浮动,以秒为单位描述请求的超时。
但是,在传输本身过程中似乎出现了问题。为了进行测试,您可以将chunk_size = 1传递给iter_lines,然后立即打印结果。服务器可能没有发送HTTP分段终止符\ r \ n(检查您是否拥有自己的服务器?值得通过https尝试其他服务器)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句