2016-06-22 33 views
13

Ora uso la fiaschetta per sviluppare l'app web.L'app Flask ottiene "IOError: [Errno 32] Broken pipe"

Ma in un primo momento funziona bene, dopo che operano pagina web per un po ', la fiaschetta di back-end mostra errori come questi:

File "/usr/lib64/python2.6/BaseHTTPServer.py", line 329, in handle 
    self.handle_one_request() 
    File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 251, in handle_one_request 
    return self.run_wsgi() 
    File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 193, in run_wsgi 
    execute(self.server.app) 
    File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 184, in execute 
    write(data) 
    File "/usr/lib/python2.6/site-packages/werkzeug/serving.py", line 152, in write 
    self.send_header(key, value) 
    File "/usr/lib64/python2.6/BaseHTTPServer.py", line 390, in send_header 
    self.wfile.write("%s: %s\r\n" % (keyword, value)) 
IOError: [Errno 32] Broken pipe 

mia app corsa sulla porta 5000 app.run(debug=True,port=5000),

io uso nginx come server web e impostare proxy_pass http://127.0.0.1:5000 nel file di configurazione nginx.

Ora non so davvero dove è il contrario, io uso session['email'] = request.form['email'] e in altri file io uso email = session.get('email').

L'utilizzo è corretto? Come impostare il periodo di sessione attiva?

o qualsiasi altro motivo causa questo errore?

poi ho impostato app.run(debug=False,port=5000), mostra nuovo errore

File "/usr/lib64/python2.6/SocketServer.py", line 671, in finish 
    self.wfile.flush() 
    File "/usr/lib64/python2.6/socket.py", line 303, in flush 
    self._sock.sendall(buffer(data, write_offset, buffer_size)) 
socket.error: [Errno 32] Broken pipe 

perché?

Please help me, thks.

+0

' eamil' e 'email', errori di battitura? – hjpotter92

+0

Non userei il server werkzeug in produzione, uso u gnuorn o nginx uwsgi o qualcosa del genere. – syntonym

+0

Ho scritto male, non sembra questo motivo. –

risposta

17

Il server werkzeug incorporato non è in grado di gestire il terminale remoto chiudendo la connessione mentre il server sta ancora elaborando il contenuto.

invece di app.run(debug=True,port=5000)

provare

from gevent.wsgi import WSGIServer 
http_server = WSGIServer(('', 5000), app) 
http_server.serve_forever() 

o se si sta utilizzando nginx, utilizzarlo con uwsgi come descritto here

Si tratta piuttosto di una questione werkzeug direi

+0

Werkzeug stava causando gli stessi errori per me. Passare a Gunicorn mi ha aiutato molto. http://www.onurguzel.com/how-to-run-flask-applications-with-nginx-using-gunicorn/ – JJFord3

+0

Questo ha funzionato molto bene. Grazie per la pubblicazione. Ulteriori informazioni su questi tipi di connessioni WSGI e alternative sono disponibili qui: http://flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/ – phyatt

Problemi correlati