现在我使用flask来开发网络应用程序。
但起初效果很好,在操作网页一段时间之后,烧瓶后端会出现如下错误:
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
我的应用程序在端口5000 app.run(debug=True,port=5000)
上运行,
我使用nginx作为Web服务器,并在nginx配置文件中设置proxy_pass http://127.0.0.1:5000
。
现在我真的不知道错在哪里,我使用session['email'] = request.form['email']
而在其他文件中我使用email = session.get('email')
。
这种用法是对的吗?如何设置会话活动期?
或任何其他原因导致此错误?
然后我设置了app.run(debug=False,port=5000)
,它显示了新的错误
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
为什么?
请帮助我,谢谢。
答案 0 :(得分:22)
当服务器仍在修改其内容时,内置的werkzeug服务器无法处理关闭连接的远程端。
而不是app.run(debug=True,port=5000)
试
from gevent.wsgi import WSGIServer
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()
或者如果您使用的是nginx,请按照here
所述的uwsgi使用它我认为这是一个werkzeug
问题