python - 使用 requests 诊断挂起的请求

标签 python python-requests

我看过几篇有关使用超时参数处理挂起请求的相关帖子,但是我不确定如何诊断我的请求是否挂起或是否存在其他潜在问题。我正在传输一些数据并记录它并将其打印到控制台。现在我已经两次看到长时间没有数据打印到控制台,当我中断执行时,我得到以下堆栈跟踪

  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)

是否有一些我可以设置的附加参数或在某处记录与连接相关的更多信息,从堆栈跟踪中我不清楚问题是什么。

最佳答案

您可以在创建Request对象或发送请求时设置HTTP session 的超时时间;请参阅here :

timeout – (optional) Float describing the timeout of the request in seconds.

但是,传输过程本身似乎出了问题。出于测试目的,您可以将 chunk_size=1 传递给 iter_lines,并立即打印结果。服务器可能不会发送 HTTP 分块终止符 \r\n (检查您是否有自己的服务器?值得通过 https 尝试其他服务器)。

关于python - 使用 requests 诊断挂起的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24875760/

相关文章:

python - 如何用 pandas 完成一些缺失日期的时间序列数据

jquery - HTML 表的差异化 AJAX 更新?

Python、Django 和 pyodbc : invalid characters

python - 使用 python requests 库将文件发布到服务器时出现错误请求错误

python - 从 Django 下载的 docx 文件已损坏

python - 通过 Python Requests 模块发出 HTTP 请求不能通过 curl 的代理工作?为什么?

python - 如何防止 python 请求对我的 URL 进行百分比编码?

python - 在 tastypie 中发布 url

python - 如何在 Visual Studio Code 中使用基于断点的调试器来调试 CKAN?

Python Web 抓取 : grequests vs. 多线程请求?