2016-02-14 21 views
10

Websockets ile flask web uygulamasını test etmeye çalışıyorum Kodum iyi çalışıyor, ancak tarayıcıda iki veya daha fazla sayfayı yeniden yüklediğimde. OSError terminalinde var. Ve bu hata flask üzerinde çalışmayı engellemez.OSError: raw readinto() websockets kullanırken geçersiz uzunluk döndürdü

main.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Chat</title> 
    <script type="text/javascript" src="{{ url_for('static', filename='jquery-2.2.0.js') }}"></script> 
    <script type="text/javascript" src="{{ url_for('static', filename='socket.io.min.js') }}"></script> 
</head> 
<body> 

<script type="text/javascript" charset="utf-8"> 

    $(document).ready(function() { 

     var socket = io.connect('http://' + document.domain + ':' + location.port); 

     socket.emit('connect', {data: 'U connected'}); 

     socket.on('apply', function (e) { 
      console.log('it works'); 
       $('#log').append('<br>' + e.data + '<br>') 

     }); 

    }); 

</script> 

<h1 id="log"></h1> 
</body> 
</html> 

app.py

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) 

traceback

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) 

hata ne anlama geliyor?

+0

Bu konuda herhangi bir güncelleme var mı? Aynı hatayı yaşıyorum! – Benny

+0

Nameko kullanarak aynı hata. – laike9m

+0

Aynı hata: IE14 ile webapp'ı açın ve IE'yi (yalnızca sekmeyi değil, tüm programı) kapatın ve yukarıdaki traceback'i tekrar üretebilirim. Firefox veya krom ile bu hata oluşmaz! –

cevap

0

Kör çekim, ancak bu davranışa, büyük olasılıkla web-gezgini, herhangi bir şey göndermeden önce web-bağlantısı bağlantısını sonlandırması neden olur. Tarayıcıyı yenilemek muhtemelen web bağlantısının (aksi halde yeniden kullanılabilir) tcp bağlantısını kapatmasına neden olur. Şişe tarafında bu, bazı baytlar bekler ancak yuva kapalıyken veri beklerken ölen OSError'a neden olur. Başka bir deyişle: Yapabileceğiniz ve aslında zararlı olmayan hiçbir şey yoktur.

0

Hatayı çeşitli yollarla çözmeyi denedim, ancak benim için çalışmadı. Bir süre sonra Ubuntu'yu yeniden kurdum ve sunucum çalışmaya başladı.

Muhtemelen işletim sistemi soketlerine göre sorun var veya doğru bir şey yüklemedim. Yanlış anlaşılma bana kalır.

Birisine yardımcı olmak için bu yorumları bırakmak, ancak yine de tamamen açılmamış ve açılmamıştır.