2016-06-22 24 views
13

Bây giờ tôi sử dụng bình để phát triển ứng dụng web.Ứng dụng Flask nhận "IOError: [Errno 32] Ống bị hỏng"

Nhưng lúc đầu nó hoạt động tốt, sau khi hoạt động trang web cho một thời gian, bình back-end cho thấy lỗi như thế này:

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 

Ứng dụng của tôi chạy trên cổng 5000 app.run(debug=True,port=5000),

tôi sử dụng nginx là máy chủ web và đặt proxy_pass http://127.0.0.1:5000 trong tệp cấu hình nginx.

Bây giờ tôi thực sự không biết đâu là sai, tôi sử dụng session['email'] = request.form['email'] và trong tệp khác tôi sử dụng email = session.get('email').

Quyền sử dụng này có đúng không? Làm cách nào để đặt thời gian hoạt động của phiên?

hoặc bất kỳ lý do nào khác gây ra lỗi này?

sau đó tôi đặt app.run(debug=False,port=5000), nó cho thấy lỗi mới

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 

tại sao?

Xin hãy giúp tôi, thks.

+0

' eamil' và 'email', lỗi chính tả? – hjpotter92

+0

Tôi sẽ không sử dụng máy chủ werkzeug trong sản xuất, sử dụng gunicorn hoặc nginx uwsgi hoặc một cái gì đó. – syntonym

+0

Tôi đánh vần sai, có vẻ như không phải lý do này. –

Trả lời

17

Máy chủ werkzeug tích hợp không có khả năng xử lý đầu cuối từ xa đóng kết nối trong khi máy chủ vẫn đang xử lý nội dung của nó.

thay vì app.run(debug=True,port=5000)

thử

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

hoặc nếu bạn đang sử dụng nginx, sử dụng nó với uwsgi như mô tả here

Nó là khá một vấn đề werkzeug tôi sẽ tranh luận

+0

Werkzeug đã gây ra lỗi tương tự cho tôi. Chuyển sang gunicorn đã giúp rất nhiều. http://www.onurguzel.com/how-to-run-flask-applications-with-nginx-using-gunicorn/ – JJFord3

+0

Điều này làm việc thực sự tốt. Cảm ơn vì đăng. Thông tin thêm về các loại kết nối và lựa chọn thay thế này của WSGI có tại đây: http://flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/ – phyatt

Các vấn đề liên quan