OSError:raw readinto()在使用websockets时返回无效长度

时间:2016-02-14 17:12:09

标签: python websocket

我尝试使用websockets测试我的烧瓶Web应用程序 我的代码运行良好,但是当我在浏览器中重新加载两次或更多次页面时。我在终端OSError。而且这个错误并不能阻止烧瓶工作。

main.html中

from flask_socketio import SocketIO, emit
from flask import Flask, render_template


app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socket_io = SocketIO(app)


@app.route('/')
def index():
    return render_template('main.html')


@socket_io.on('connect')
def connect():
    emit('apply', {'data': "Connect"})

if __name__ == '__main__':
    socket_io.run(app, debug=True)

app.py

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/eventlet/greenpool.py", line 82, in _spawn_n_impl
    func(*args, **kwargs)
  File "/usr/local/lib/python3.5/site-packages/eventlet/wsgi.py", line 703, in process_request
    proto.__init__(sock, address, self)
  File "/usr/local/lib/python3.5/socketserver.py", line 684, in __init__
    self.handle()
  File "/usr/local/lib/python3.5/http/server.py", line 417, in handle
    self.handle_one_request()
  File "/usr/local/lib/python3.5/site-packages/eventlet/wsgi.py", line 315, in handle_one_request
    self.raw_requestline = self.rfile.readline(self.server.url_length_limit)
OSError: raw readinto() returned invalid length -1 (should have been between 0 and 8192)

回溯

OAuth2Parameters parameters; 
public string First() {  parameters = new OAuth2Parameters(); ....

错误意味着什么?

2 个答案:

答案 0 :(得分:0)

盲目拍摄,但这种行为很可能是由于webbrowser在发送任何内容之前终止了websocket-connection。刷新浏览器可能会导致websocket关闭它(否则可重用)tcp连接。在烧瓶方面,这会导致OSError,它会在插座关闭时等待数据时需要一些字节但是会死掉。

换句话说:你无能为力,实际上没有害处。

答案 1 :(得分:0)

我尝试通过各种方式解决错误,但它对我不起作用。 所以过了一段时间,我重新安装了Ubuntu,我的服务器开始工作了。

可能是基于操作系统套接字的问题,或者我没有正确安装。这让我误解了。

留下这些评论来帮助某人,但它仍然已经打开并且没有完全解决。