带有json有效负载的请求冻结在> 64KB

时间:2014-06-16 11:30:40

标签: python json request

主题:Python,带有json有效负载的请求冻结在> 64KB

在ubuntu linux上请求2.3

for-loop:
    response = requests.post(url, data=json.dumps(payload), headers=headers)
    results = response.json()

代码有效,但在有效负载>时失败; 64Kb和程序冻结。使用pudb,孤立的问题:

Traceback
    File "/home/ubuntu/anaconda/lib/python2.7/socket.py", line 476 in readline
      data = self._socket.recv(self._rbufsize)

Variables:
  buf: StringIO
  buf_len: 0
  self: _fileobject
  size: 65537

Stack:
  readline [_fileobject] socket.py
  _read_status [HTTPResponse] httplib.py
  begin [HTTPResponse] httplib.py
  getresponse [HTTPConnection]
  _make_request [HTTPConnectionpool]
  urlopen [HTTPConnectionpool]
  send [HTTPAdaptor] adapters.py
  send [Session] sessions.py:486
  request [Session] sessions.py
  request api.py:44
  post api.py:88

好像没有清除缓冲区。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

requests上传了的请求服务器没有响应。

特定行正在等待来自套接字的数据; self._socket.recv(self._rbufsize)表示从套接字读取self._rbufsize个字节数

从您的跟踪中可以清楚地看到,这是从HTTPResponse._read_status行调用的,该行正在尝试阅读HTTP response status line;例如它正在等待服务器将其发送回HTTP 1.1 200 OK或类似的响应接收线。

您需要弄清楚为什么您的服务器显然无法处理超过64KB的请求。 Python请求已尽其所能上传请求。