我在调用self.finish()来结束一个异步请求时偶尔使用tornado 2.0,并且偶尔会收到IOError消息“Stream is closed ”。看起来,当客户端在服务器调用完成()之前结束请求(即通过导航到另一个页面)时会发生这种情况。这是预期的行为和我的代码只需要处理?我从一年前发现这个错误,表明这不是客户端代码应该处理的东西:https://github.com/facebook/tornado/issues/81。这是否代表我的代码中存在错误?如果是这样,可能的原因是什么?tornado IOError“Stream is closed”on request finish()
堆栈跟踪:
Traceback (most recent call last):
File "my_code.py", line 260, in my_method
self.finish()
File "/usr/lib/python2.6/site-packages/tornado/web.py", line 634, in finish
self.request.finish()
File "/usr/lib/python2.6/site-packages/tornado/httpserver.py", line 555, in finish
self.connection.finish()
File "/usr/lib/python2.6/site-packages/tornado/httpserver.py", line 349, in finish
self._finish_request()
File "/usr/lib/python2.6/site-packages/tornado/httpserver.py", line 372, in _finish_request
self.stream.read_until(b("\r\n\r\n"), self._header_callback)
File "/usr/lib/python2.6/site-packages/tornado/iostream.py", line 137, in read_until
self._check_closed()
File "/usr/lib/python2.6/site-packages/tornado/iostream.py", line 403, in _check_closed
raise IOError("Stream is closed")
IOError: Stream is closed
喜说笑,你有没有得到解决这个?即时通讯体验相同的事情。 –
我没有。我现在只要调用self.finish就会发现IOErrors ...不知道这是否是最优的,但它会使问题消失。 – josh