Подтвердить что ты не робот

Приложение Flask получает "IOError: [Errno 32] Broken pipe"

Теперь я использую флягу для разработки веб-приложения.

Но сначала он работает хорошо, после работы веб-страницы какое-то время, флеш-back-end показывает ошибку, подобную этим:

   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 в качестве веб-сервера и устанавливаю proxy_pass http://127.0.0.1:5000 в файле конфигурации nginx.

Теперь я действительно не знаю, где не так, я использую 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

почему?

Пожалуйста, помогите мне, спасибо.

4b9b3361

Ответ 1

Встроенный сервер werkzeug не способен обрабатывать удаленный конец, закрывающий соединение, пока сервер все еще отключает его содержимое.

вместо app.run(debug=True,port=5000)

попробовать

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

или если вы используете nginx, используйте его с uwsgi, как описано здесь

Это скорее проблема werkzeug, я бы сказал, что