рдореЗрд░реЗ рдкрд╛рд╕ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╡рд░реНрдХрдЬрд╝реЗрдЧ рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдХреНрд▓рд╛рдЗрдВрдЯ Werkzeug рд╕рд░реНрд╡рд░ рдХреЗ рдЬрд╡рд╛рдм рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реБрдП рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ NGINX рдкрд╛рдЗрдк рдХреЛ Werkzeug рдореЗрдВ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдЬрдм рдЕрдЬрдЧрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо Werkzeug рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ рдФрд░ Werkzeug рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:
рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "server.py", рд▓рд╛рдЗрди 81, in
app.run(host=args.host, port=args.port, debug=False)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/flask/app.py", рд▓рд╛рдЗрди 843, рд░рди рдореЗрдВ
run_simple (рд╣реЛрд╕реНрдЯ, рдкреЛрд░реНрдЯ, рд╕реЗрд▓реНрдл, **рд╡рд┐рдХрд▓реНрдк)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", рд▓рд╛рдЗрди 694, run_simple рдореЗрдВ
рднреАрддрд░реА()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", рд▓рд╛рдЗрди 659, рдЖрдВрддрд░рд┐рдХ рдореЗрдВ
srv.serve_forever ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", рд▓рд╛рдЗрди 499, service_forever рдореЗрдВ
HTTPServer.serve_forever(рд╕реНрд╡рдпрдВ)
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/SocketServer.py", рд▓рд╛рдЗрди 238, service_forever . рдореЗрдВ
self._handle_request_noblock ()
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/SocketServer.py", рд▓рд╛рдЗрди 297, _handle_request_noblock рдореЗрдВ
self.handle_error (рдЕрдиреБрд░реЛрдз, рдХреНрд▓рд╛рдЗрдВрдЯ_рдПрдбреНрд░реЗрд╕)
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/SocketServer.py", рд▓рд╛рдЗрди 295, _handle_request_noblock рдореЗрдВ
self.process_request (рдЕрдиреБрд░реЛрдз, рдХреНрд▓рд╛рдЗрдВрдЯ_рдПрдбреНрд░реЗрд╕)
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/SocketServer.py", рд▓рд╛рдЗрди 321, process_request . рдореЗрдВ
self.finish_request (рдЕрдиреБрд░реЛрдз, рдХреНрд▓рд╛рдЗрдВрдЯ_рдПрдбреНрд░реЗрд╕)
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/SocketServer.py", рд▓рд╛рдЗрди 334, рдлрд┐рдирд┐рд╢_рд░реЗрдХреНрд╡реЗрд╕реНрдЯ рдореЗрдВ
self.RequestHandlerClass (рдЕрдиреБрд░реЛрдз, рдХреНрд▓рд╛рдЗрдВрдЯ_рдПрдбреНрд░реЗрд╕, рд╕реНрд╡рдпрдВ)
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/SocketServer.py", рд▓рд╛рдЗрди 651, init . рдореЗрдВ
рд╕реНрд╡рдпрдВ рд╕рдорд╛рдкреНрдд ()
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/SocketServer.py", рд▓рд╛рдЗрди 710, рдлрд┐рдирд┐рд╢ рдореЗрдВ
рд╕реНрд╡.wfile.рдмрдВрдж рдХрд░реЗрдВ ()
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/socket.py", рд▓рд╛рдЗрди 279, рдкрд╛рд╕ рдореЗрдВ
рд╕реНрд╡рдпрдВ рдлреНрд▓рд╢ ()
рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/socket.py", рд▓рд╛рдЗрди 303, рдлреНрд▓рд╢ рдореЗрдВ
self._sock.sendall (рджреЗрдЦреЗрдВ [рд▓рд┐рдЦреЗрдВ_рдСрдлрд╝рд╕реЗрдЯ: рд▓рд┐рдЦреЗрдВ_рдСрдлрд╝рд╕реЗрдЯ + рдмрдлрд░_рд╕рд╛рдЗрдЬрд╝])
рд╕реЙрдХреЗрдЯред рддреНрд░реБрдЯрд┐: [рддреНрд░реБрдЯрд┐ 32] рдЯреВрдЯрд╛ рд╣реБрдЖ рдкрд╛рдЗрдк
рдХреНрдпрд╛ рдХреЛрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдореБрдЭреЗ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ? рдЖрдо рддреМрд░ рдкрд░ рд╕рднреА рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ 500 рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд░реНрд╡рд░ рдЬреАрд╡рд┐рдд рд░рд╣рддрд╛ рд╣реИред
рдЙрддреНрдкрд╛рджрди WSGI рд╕рд░реНрд╡рд░ рдЬреИрд╕реЗ Gunicorn рдпрд╛ uWSGI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, Werkzeug dev рд╕рд░реНрд╡рд░ рдХрд╛ рдирд╣реАрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП Werkzeug dev рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЬреЛ рдХрд┐, AFAICT, рдЗрд╕рдХрд╛ рдЗрдЪреНрдЫрд┐рдд рдЙрдкрдпреЛрдЧ рд╣реИ), рдпрд╛рдиреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдкреЛрд░реНрдЯ 5000 рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред
рддреНрд░реБрдЯрд┐ рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдХрдИ рдмрд╛рд░ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рдкреБрдирд░рд╛рд░рдВрдн рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдПрдХ рдЯреНрд░реЗрд╕рдмреИрдХ рд╣реИ:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/Users/fermigier/envs/extranet-spr/lib/python2.7/site-packages/werkzeug/serving.py", line 659, in inner
srv.serve_forever()
File "/Users/fermigier/envs/extranet-spr/lib/python2.7/site-packages/werkzeug/serving.py", line 499, in serve_forever
HTTPServer.serve_forever(self)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 238, in serve_forever
self._handle_request_noblock()
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 297, in _handle_request_noblock
self.handle_error(request, client_address)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SocketServer.py", line 655, in __init__
self.handle()
File "/Users/fermigier/envs/extranet-spr/lib/python2.7/site-packages/werkzeug/serving.py", line 216, in handle
rv = BaseHTTPRequestHandler.handle(self)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 340, in handle
self.handle_one_request()
File "/Users/fermigier/envs/extranet-spr/lib/python2.7/site-packages/werkzeug/serving.py", line 251, in handle_one_request
return self.run_wsgi()
File "/Users/fermigier/envs/extranet-spr/lib/python2.7/site-packages/werkzeug/serving.py", line 193, in run_wsgi
execute(self.server.app)
File "/Users/fermigier/envs/extranet-spr/lib/python2.7/site-packages/werkzeug/serving.py", line 186, in execute
write(b'')
File "/Users/fermigier/envs/extranet-spr/lib/python2.7/site-packages/werkzeug/serving.py", line 152, in write
self.send_header(key, value)
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 401, in send_header
self.wfile.write("%s: %s\r\n" % (keyword, value))
IOError: [Errno 32] Broken pipe
рдореИрдВ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ ( debug=True
) рдХреЗ рд╕рд╛рде @sfermigier рдХреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдПрдХ рд╣реА рдЯреНрд░реЗрд╕рдмреИрдХ рддреНрд░реБрдЯрд┐ рд╣реИред
рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ: рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрд╡рддрдГ рдкреВрд░реНрдг рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд╡реЗрд░реА рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреВрдЯреЗ рд╣реБрдП рдкрд╛рдЗрдкреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдФрд░ рдпрд╣ рдЕрдВрддрд┐рдо рд░рд┐рд▓реАрдЬ рддрдХ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА рдЬреЛ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреЗрддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдПрдХ рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИред рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрдо рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ _рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЖрдВрддрд░рд┐рдХ_ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдПрдХ рдЯреВрдЯрд╛ рд╣реБрдЖ рдкрд╛рдЗрдк рдмрд╣реБрдд рдЖрдо рд╣реИ (рддреНрд░реБрдЯрд┐ рд╕реЗ рдПрдХ рд▓рдВрдмреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдЯреЙрдк рдмрдЯрди рджрдмрд╛ рд░рд╣рд╛ рд╣реИ) рдФрд░ рд╡рд┐рдХрд╛рд╕ рд╕рд░реНрд╡рд░ рдХреЛ рддреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдПред
рдПрдХрджрдо рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ред :)
@xcash
рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ: рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрд╡рддрдГ рдкреВрд░реНрдг рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд╡реЗрд░реА рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд░реБрдХ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЕрдиреБрд░реЛрдз рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рддреЛ рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ browsersync
рд╕рд╛рде gulp.js
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдореЗрдЬрдмрд╛рди рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ SYN рд╕реНрдХреИрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреЙрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓рд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
@glennzw рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХреЛ рдЦреБрд▓реЗ рд╡реЗрдм рдкрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдмреЙрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред :) рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдореЛ рд╣реЛрд╕реНрдЯ рдХреА рддрд░рд╣, рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдЬреИрд╕реЗ рдЧрдирд┐рдХреЛрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдкрджрдЪрд┐рд╣реНрди рд╣реЛрддрд╛ рд╣реИред
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореИрдВ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЬреНрдпрд╛рджрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ (рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж) рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдордИ-рдЕрдЧрд╕реНрдд 2016 рдХреЗ рдмреАрдЪ рдХреБрдЫ рд╕рдордп рд╕реЗ рд╣реЛ рд░рд╣реА рд╣реИ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреЗ setup.py install_requires = ['Werkzeug<0.11', 'flask<0.11', ...
рдЬреЛрдбрд╝рд╛ - рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ (IME, рд╕рд┐рд░реНрдл Werkzeug рдХреЛ рдкрд┐рди рдХрд░рдирд╛ рдЪрд╛рд▓ рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛?)
рдореЗрд░реЗ рд▓рд┐рдП рдбреБрдкреНрд▓реАрдХреЗрд╢рди рдХреЗрд╕ рдХрд╛рдлреА рдЖрд╕рд╛рди рдерд╛ - рдПрдХ рдкреЗрдЬ рд▓реЛрдб рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рдЦрддреНрдо рди рд╣реЛрдиреЗ рджреЗрдВред рдпрд╣реА рд╣реИ, рдмрд╕ _any_ рдЯреВрдЯреА рд╣реБрдИ рдкрд╛рдЗрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВ - рдФрд░ рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣реЗрдЧрд╛ред рдЖрдИрдПрдордПрдЪрдУ, рдЬрдм рдХреЛрдИ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рд▓реЗ рднреАред
рдХреНрдпрд╛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рднреА рдиреЗ passthrough_errors
рдХрд╣реАрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реЛ?
@untitaker рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрд▓реЗрдЯ/рдлреНрд▓рд╛рд╕реНрдХ#1674 рдкреИрд▓реЗрдЯ/рдлреНрд▓рд╛рд╕реНрдХ#1679 рдкреИрд▓реЗрдЯ/рдлреНрд▓рд╛рд╕реНрдХ#1928 рд╕рдВрднрд╡рддрдГ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯрд░ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗред
26 рдЕрдЧрд╕реНрдд 2016 рдХреЛ 17:05:25 рд╕реАрдИрдПрд╕рдЯреА, рдбреЗрд╡рд┐рдб рд▓реЙрд░реНрдб рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
@untitaker рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрд▓реЗрдЯ/рдлреНрд▓рд╛рд╕реНрдХ#1674 рдкреИрд▓реЗрдЯ/рдлреНрд▓рд╛рд╕реНрдХ#1679
рдкреИрд▓реЗрдЯ/рдлреНрд▓рд╛рд╕реНрдХ#1928 рд╕рдВрднрд╡рддрдГ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ?рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/pallets/werkzeug/issues/954#issuecomment -242761250
K-9 рдореЗрд▓ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ Android рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ред рдореЗрд░реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЛ рдорд╛рдлрд╝ рдХрд░реЛред
cc @miguelgrinberg
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Werkzeug рдХреЛ рдЯреВрдЯреА рд╣реБрдИ рдкрд╛рдЗрдк рдФрд░ рдХрдиреЗрдХреНрд╢рди рд░реАрд╕реЗрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдмрд╕ рдЪрд▓рд╛ рдЧрдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдкрд╡рд╛рдж рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдХреИрдЪ-рдСрд▓ рддрд░рд╣ рд╕реЗ рдКрдкрд░ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдкрд╛рд╕рдереНрд░реВ рд╕реЗрдЯ рд╣реЛред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ: https://github.com/benoitc/gunicorn/blob/39f62ac66beaf83ceccefbfabd5e3af7735d2aff/gunicorn/workers/sync.py#L151 -L154
рдпрд╣реА рдХрд░рдирд╛ рд╣реИред рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдП
рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╢реНрди
рд▓рдЧрднрдЧ passthrough_errors
ред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ Werkzeug рдореЗрдВ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ
рдмрд╕ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдмрдЬрд╛рдп)
рд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢)ред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╕рд░реНрд╡рд░ рдХреЛ
рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗрдВред
рд╢реБрдХреНрд░рд╡рд╛рд░ 26 рдЕрдЧрд╕реНрдд 2016 рдХреЛ 11:54:16 рдкреВрд░реНрд╡рд╛рд╣реНрди -0700 рдмрдЬреЗ рдорд┐рдЧреБрдПрд▓ рдЧреНрд░рд┐рдирдмрд░реНрдЧ рдиреЗ рд▓рд┐рдЦрд╛:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Werkzeug рдХреЛ рдЯреВрдЯреА рд╣реБрдИ рдкрд╛рдЗрдк рдФрд░ рдХрдиреЗрдХреНрд╢рди рд░реАрд╕реЗрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдмрд╕ рдЪрд▓рд╛ рдЧрдпрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдкрд╡рд╛рдж рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдХреИрдЪ-рдСрд▓ рддрд░рд╣ рд╕реЗ рдКрдкрд░ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдкрд╛рд╕рдереНрд░реВ рд╕реЗрдЯ рд╣реЛред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ: https://github.com/benoitc/gunicorn/blob/39f62ac66beaf83ceccefbfabd5e3af7735d2aff/gunicorn/workers/sync.py#L151 -L154
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/pallets/werkzeug/issues/954#issuecomment -242821084
рдУрд╣, рдФрд░ рдЯреВрдЯреА рд╣реБрдИ рдкрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ _are_ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВ, рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдХреЛ рдХрднреА рднреА рд╡рд░реНрдгрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВред
рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рдмрд┐рдЯреНрд╕ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдореИрдВ рд╡рд┐рд╢реЗрд╖ рдХреНрдпреЛрдВ рд╣реВрдВред
import time
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
time.sleep(5)
return 'Hello, World!'
if __name__ == "__main__":
app.run()
рдпрд╣ flask run
рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдЖрдк python hello.py
рдорд╛рдзреНрдпрдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдирд╛ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЦреЛ рдЧрдпрд╛ рд╣реИред
рд╢реБрдХреНрд░рд╡рд╛рд░, 26 рдЕрдЧрд╕реНрдд 2016 рдХреЛ рджреЛрдкрд╣рд░ 12:29:39 рдЕрдкрд░рд╛рд╣реНрди -0700 рдкрд░, рдХреНрд▓реЗрдЧ рдиреЗ рд▓рд┐рдЦрд╛:
рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рдмрд┐рдЯреНрд╕ рдХрд╛ рдлрд┐рд░ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рдореИрдВ рд╡рд┐рд╢реЗрд╖ рдХреНрдпреЛрдВ рд╣реВрдВред
You are receiving this because you were mentioned. Reply to this email directly or view it on GitHub: https://github.com/pallets/werkzeug/issues/954#issuecomment-242829536
рд╣рд╛рдВ, рд╕реНрд▓реИрдХ рдЯреНрд░рд┐рдкрд▓-рдЯрд┐рдХреНрд╕ рдореЗрдВ рдЖрдк рдмреЛрд▓реА рдХреЛ рдХреИрд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ ctrl-return
рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдирдИ-рдкрдВрдХреНрддрд┐ рд╣реИрдВ
рдЬреАрдердм рдкрд░, рдЯреНрд░рд┐рдкрд▓-рдЯрд┐рдХреНрд╕ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЙрджреНрдзрд░рдг рдХреЛ рдХреИрд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди ctrl-return
рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ
... рд╡реИрд╕реЗ рднреА ... рдорд╛рдВрд╕рдкреЗрд╢реА рд╕реНрдореГрддрд┐
рдореИрдВрдиреЗ рдЕрдкрдиреА рдкреЛрд╕реНрдЯ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ - рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдЬрд╡рд╛рдм рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдИрдореЗрд▓ рд╕реЗ рдЬрд╡рд╛рдм рджреЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдЬреАрдердм рдЖрдкрдХреЛ рдПрдХ рдФрд░ рдиреЛрдЯрд┐рд╕ рднреЗрдЬреЗрдЧрд╛ред
рдореИрдВ рдЙрдкрд░реЛрдХреНрдд @clayg рджреНрд╡рд╛рд░рд╛ рдиреАрдВрдж рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЯреВрдЯреА рд╣реБрдИ рдкрд╛рдЗрдк рддреНрд░реБрдЯрд┐ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реВрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЕрдиреБрд░реЛрдз рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ, рд▓реЗрдХрд┐рди Werkzeug рдЕрдВрдд рддрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рд╡реИрд╕реЗ рднреА, рдпрд╣ рдХрдВрд╕реЛрд▓ рдкрд░ 200 рд▓реЙрдЧ рд▓рд╛рдЗрди рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдлреНрд▓рд╛рд╕реНрдХ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдЪрд╛рд▓ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬреЛ рдХрднреА рди рдЦрддреНрдо рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдлреНрд░реЗрдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрд╕рдХреЗ рд▓рд┐рдП рднреА, рдореИрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдиреБрд░реЛрдз рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрддреАрдд рдореЗрдВ рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЯреВрдЯреА рд╣реБрдИ рдкрд╛рдЗрдк рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧрд╛ред
рджрд░рдЕрд╕рд▓, рдореИрдВ рдмрд╣реБрдд рдЬрд▓реНрджреА рдмреЛрд▓ рдЧрдпрд╛ред рдореИрдВ рд╣рд░ рдмрд╛рд░ рдЕрдкрдиреЗ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдРрдк рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди 2.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ 3.5 рдкрд░ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ 2.7 рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдкрд╛рдпрдерди 3 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдбреЗрдЯрд╛ рдмрд┐рдВрджреБред рдпрджрд┐ рд░реАрд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЬрдм рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реАрд▓реЛрдбрд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реА рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдФрд░ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд░реБрдХрд╛рд╡рдЯ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдмрд┐рдирд╛ рд░реАрд▓реЛрдбрд░ рдХреЗ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЯреВрдЯреА рд╣реБрдИ рдкрд╛рдЗрдк рддреНрд░реБрдЯрд┐ рдЖрдкрдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рд╡рд╛рдкрд╕ рд▓рд╛рддреА рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрд╛рдЧ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреБрдирдГ рд▓реЛрдбрд░ рдХреА рдЕрд╡рд╣реЗрд▓рдирд╛ рдХрд░реЗрдВ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореИрдВ рд╕рдВрднрд╡рддрдГ рдкрд╛рд╕рдереНрд░реВ рддреНрд░реБрдЯрд┐ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рджреЗрдЦ рд░рд╣рд╛ рдерд╛ред
рдареАрдХ рд╣реИ, рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
flush()
рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкрд╛рдЗрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдкреБрд░рд╛рдиреЗ рдмрдЧ рдХрд╛ рд╡рд┐рд╖рдп рдерд╛ рдЬрд┐рд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдареАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: http://bugs.python.org/issue14574ред рдЗрд╕ рдлрд┐рдХреНрд╕ рдореЗрдВ рд╕рдорд╛рдзрд╛рди socket.error
рдХреЛ рдкрдХрдбрд╝рдирд╛ рдФрд░ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдерд╛ред
File "/usr/lib/python2.7/SocketServer.py", line 710, in finish
self.wfile.close()
socket.close()
рд╡рд┐рдзрд┐ рдлрд┐рд░ рд╕реЗ рдлреНрд▓рд╢ рдХрд░рддреА рд╣реИ:
File "/usr/lib/python2.7/socket.py", line 279, in close
self.flush()
handle_error()
рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИредhandle_error()
рдХрд╛ Werkzeug рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди passthrough_errors
рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ True
рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдкрд╛рдпрдерди 3 рдкрд░ рд╕реЙрдХреЗрдЯ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдЖрд╕-рдкрд╛рд╕ рдХреЛрд╢рд┐рд╢/рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ рдлреНрд▓рд╢ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИред рдкрд╛рдпрдерди 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп EPIPE рддреНрд░реБрдЯрд┐ Werkzeug рддрдХ рднреА рдмреБрд▓рдмреБрд▓рд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рднреА passthrough_errors рд╕рддреНрдп рдкрд░ рд╕реЗрдЯ рд╣реИ? Werkzeug рдореЗрдВ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред
27 рдЕрдЧрд╕реНрдд 2016 рдХреЛ 02:10:13 рд╕реАрдИрдПрд╕рдЯреА, рдорд┐рдЧреБрдПрд▓ рдЧреНрд░рд┐рдирдмрд░реНрдЧ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдареАрдХ рд╣реИ, рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЬреЛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЙрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рдмреАрдЪ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдЕрдиреБрд░реЛрдз рдЪрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИред рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ
рдмрдлрд╝рд░реНрдб, рдЗрд╕рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕реЙрдХреЗрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдЧрд╛
рд╕рдорд╕реНрдпрд╛ред- рдЕрдиреБрд░реЛрдз рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рд╡рд░реНрдЧ
flush()
рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛
рд╕реЙрдХреЗрдЯ рдкрд░ред рдпрд╣ рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рдкреБрд░рд╛рдиреЗ рдмрдЧ рдХрд╛ рд╡рд┐рд╖рдп рдерд╛
рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдареАрдХ рд╣реИ: http://bugs.python.org/issue14574ред NS
рдЗрд╕ рдлрд┐рдХреНрд╕ рдореЗрдВ рд╕рдорд╛рдзрд╛рдиsocket.error
рдХреЛ рдкрдХрдбрд╝рдирд╛ рдФрд░ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдерд╛ред- рдлрд┐рд░ рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╣реИ
рдУрдкреА рд╕реЗ рдмреИрдХрдЯреНрд░реИрдХ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо:File "/usr/lib/python2.7/SocketServer.py", line 710, in finish self.wfile.close()
- рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрд╛рдпрдерди 2.7 рдореЗрдВ, рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐
socket.close()
рд╡рд┐рдзрд┐ рдлрд┐рд░ рд╕реЗ рдлреНрд▓рд╢ рдХрд░рддреА рд╣реИ:File "/usr/lib/python2.7/socket.py", line 279, in close self.flush()
- рдлреНрд▓рд╢ рдкрд░ рдпрд╣ рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ рдХреЛрд╢рд┐рд╢/рдЫреЛрдбрд╝рдХрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП
рдпрд╣ EPIPE рдЕрдкрд╡рд╛рдж рдЙрдард╛рддрд╛ рд╣реИред- рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ
рд╕рд░реНрд╡рд░ рдХреАhandle_error()
рд╡рд┐рдзрд┐редhandle_error()
рдХрд╛ Werkzeug рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рдореНрди рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ
passthrough_errors
рд╕реЗрдЯрд┐рдВрдЧ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ
True
, EPIPE рддреНрд░реБрдЯрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдКрдкрд░ рддрдХ рдмреБрд▓рдмреБрд▓рд╛ рдмрдирд╛рдиреЗ рджреЗрддрд╛ рд╣реИредрдкрд╛рдпрдерди 3 рдкрд░ рд╕реЙрдХреЗрдЯ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ,
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдХреЛрд╢рд┐рд╢/рдЫреЛрдбрд╝ рдХреЗ рдХреЛрдИ рдлреНрд▓рд╢ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИ
рдЙрдиреНрд╣реЗрдВред EPIPE рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп Werkzeug рддрдХ рдмреБрд▓рдмреБрд▓рд╛ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ
рдкрд╛рдпрдерди 3.рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/pallets/werkzeug/issues/954#issuecomment -242881523
K-9 рдореЗрд▓ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ Android рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ред рдореЗрд░реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЛ рдорд╛рдлрд╝ рдХрд░реЛред
рдУрд╣, рдЕрд╣рдо: https://github.com/pallets/flask/pull/1679
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдирд╡реАрдПрдо, рдмреЗрдХрд╛рд░ рд╣реИpassthrough_errors
app.debug
рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рдкреАрдЖрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред passthrough_errors=True
рдмрд╕ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдХрд┐рд╕реА рдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдбреАрдмрдЧрд░ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдореБрдЭреЗ рджреВрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓ рдЧрдпрд╛ред рджреЛ рдЬрдирд╕рдВрдкрд░реНрдХ:
passthrough_errors=True
, рд╕реЙрдХреЗрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрднреА рднреА рджреЛрдмрд╛рд░рд╛ рди рдХрд░реЗрдВред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реИрд╕реЗ рднреА рдХрднреА рдЗрд░рд╛рджрд╛ рдерд╛рдЪреВрдВрдХрд┐ рджреЛрдиреЛрдВ рд╡реНрдпрд╛рдкрдХ рдЕрд░реНрдереЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмреИрдХрдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/pallets/flask/pull/1996 рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреНрд░рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕реМрджрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ https://github.com/pallets/werkzeug/pull/998 рдлрд┐рдХреНрд╕ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╡реИрдз рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рднреА рдЪреБрдк рдХрд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпреЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдкрдХрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдХрд╕реНрдЯрдо рдЕрдкрд╡рд╛рдж рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЙрдард╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ handle_error
рдкрд╣рдЪрд╛рди рдФрд░ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо рд╢рд╛рдпрдж SocketServer
рдХреЛ рдмрджрд▓рдирд╛ рдпрд╛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╡реЛрдЯ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝рдирд╛ рд╣реИред рдЖрдк рдИрдкреАрдЖрдИрдкреАрдИ рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдбрдВрдк рдХрд░ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 2 рдкрд░, рдФрд░ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рдЕрдиреНрдп рдлрд┐рдХреНрд╕ рдХреЗ рдмрд╛рдж рдмрдВрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬреЛ рдЕрддреАрдд рдореЗрдВ рдореМрдЬреВрдж рдерд╛, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ passthrough_errors
рдкрд░рд┐рд╡рд░реНрддрдиред
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗрд╡рд▓ PASSTHROUGH_ERRORS рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рд╣реА рд╣реЛрддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ рдлреНрд▓рд╛рд╕реНрдХ рдХреЗ рднреАрддрд░ рд╕реЗ рдЕрдкрд╡рд╛рдж рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рд╕реБрдзрд╛рд░ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред
27 рдЕрдЧрд╕реНрдд 2016 рдХреЛ 18:29:30 рд╕реАрдИрдПрд╕рдЯреА, рдорд┐рдЧреБрдПрд▓ рдЧреНрд░рд┐рдирдмрд░реНрдЧ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/pallets/flask/pull/1996 рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ
рд╕рдорд╛рдзрд╛рдиред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ
рдЖрдк рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкреНрд░рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ,
рддреЛ рдЖрдк рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдкреНрд░рдЪрд╛рд░рд┐рдд рдЬрдм рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддреЛ рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИредhttps://github.com/pallets/werkzeug/pull/998 рдлрд┐рдХреНрд╕ рдмрдврд╝рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐ред рдЖрд╡реЗрджрди рдЗрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╡реИрдз рд░реВрдк рд╕реЗ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ
рдХреБрдЫ рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╡реЗ рдХрд░реЗрдВрдЧреЗ
рдЦрд╛рдореЛрд╢ рднреА рд╣реЛред рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдпреЗ рдкрдХрдбрд╝реЗ рдЬрд╛рдПрдВ
рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЬрд╣рд╛рдВ рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдХрд╕реНрдЯрдо рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЙрдард╛рдП рдЬрд╛рддреЗ рд╣реИрдВ
рд╡рд░реНрдЧ рдЬрд┐рд╕реЗhandle_error
рдкрд╣рдЪрд╛рди рдФрд░ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдо
рд╢рд╛рдпрджSocketServer
рдХреЛ рдмрджрд▓рдирд╛ рдпрд╛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ my
рд╡реЛрдЯ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдРрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджреЗрдирд╛ рд╣реИред рдЖрдкрдХреЛ EPIPE рдХреЛ рдбрдВрдк рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдХрдВрд╕реЛрд▓, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 2 рдкрд░, рдФрд░ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рд░реБрдХрдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ
рдЕрдиреНрдп рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рдж рд╕рд░реНрд╡рд░ рдЕрдВрджрд░ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ, рдФрд░ рдпрд╣ рдПрдХ рд╣реИ
рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЛ рдЕрддреАрдд рдореЗрдВ рдореМрдЬреВрдж рдерд╛, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ
passthrough_errors
рдкрд░рд┐рд╡рд░реНрддрдиредрдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/pallets/werkzeug/issues/954#issuecomment -242926832
K-9 рдореЗрд▓ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ Android рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ред рдореЗрд░реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЛ рдорд╛рдлрд╝ рдХрд░реЛред
рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдлрд┐рдХреНрд╕реНрдбред
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗрд╡рд▓ PASSTHROUGH_ERRORS рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рд╣реА рд╣реЛрддрд╛ рд╣реИ
рд╣рд╛рдВ, рдореИрдВрдиреЗ рд╡рд╣ рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди Python 3 рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд╣рд╛рдБ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред Py3 рдкрд░, рдкрд╛рд╕рдереНрд░реВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдПрдХ рд╡реИрдз рд╕реЙрдХреЗрдЯред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рддреНрд░реБрдЯрд┐ рдХреЛ рдЪреБрдк рдХрд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдорд╛рд╕реНрдЯрд░ wfm рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж!
рдирдорд╕реНрддреЗ, рдореИрдВ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХреЗ рдкреАрдЫреЗ рдЪрд▓ рд░рд╣реЗ рдПрдХ рд╡реЗрд░реНрдХрдЬрд╝реЗрдЧ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ,
11:13:11 web.1 | 127.0.0.1 - - [15/Sep/2016 11:13:11] "GET /api/method/frappe.utils.print_format.download_pdf?doctype=Purchase%20Order&name=PO-00001&format=PO&no_letterhead=0 HTTP/1.1" 200 -
11:13:11 web.1 | Error on request:
11:13:11 web.1 | Traceback (most recent call last):
11:13:11 web.1 | File "/home/ommi/frappe-bench/env/lib/python2.7/site-packages/werkzeug/serving.py", line 193, in run_wsgi
11:13:11 web.1 | execute(self.server.app)
11:13:11 web.1 | File "/home/ommi/frappe-bench/env/lib/python2.7/site-packages/werkzeug/serving.py", line 184, in execute
11:13:11 web.1 | write(data)
11:13:11 web.1 | File "/home/ommi/frappe-bench/env/lib/python2.7/site-packages/werkzeug/serving.py", line 152, in write
11:13:11 web.1 | self.send_header(key, value)
11:13:11 web.1 | File "/usr/lib/python2.7/BaseHTTPServer.py", line 401, in send_header
11:13:11 web.1 | self.wfile.write("%s: %s\r\n" % (keyword, value))
11:13:11 web.1 | IOError: [Errno 32] Broken pipe
рдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП
рд░рд╛рдШрд╡ рд╡рд░реНрдХрдЬрд╝реЗрдЧ рдХреЗ рдмрд┐рд▓реНрдЯ рдЗрди рджреЗрд╡ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
рд╕рд░реНрд╡рд░, рдЧрдирд┐рдХреЛрд░реНрди рдХреА рддрд░рд╣ред рдЕрднреА рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рдЙрдкрд╛рдп рд╣реИред
2016-09-15 8:07 рдЬреАрдПрдордЯреА+02:00 рд░рд╛рдЧрд╡ рд╕реВрдЪрдирд╛рдПрдВ @github.com :
рдирдорд╕реНрддреЗ, рдореИрдВ NGINX рдХреЗ рдкреАрдЫреЗ рдЪрд▓ рд░рд╣реЗ рдПрдХ Werkzeug dev рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, ```
11:13:11 рд╡реЗрдм.1 | 127.0.0.1 - - [15/рд╕рд┐рддрдВрдмрд░/2016 11:13:11] "рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ"
/api/method/frappe.utils.print_format.download_pdf?
doctype=Purchase%20Order&name=PO-00001&format=PO&no_letterhead=0
рдПрдЪрдЯреАрдЯреАрдкреА/1.1" 200 -
11:13:11 рд╡реЗрдм.1 | рдЕрдиреБрд░реЛрдз рдкрд░ рддреНрд░реБрдЯрд┐:
11:13:11 рд╡реЗрдм.1 | рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
11:13:11 рд╡реЗрдм.1 | рдлрд╝рд╛рдЗрд▓ "/ рд╣реЛрдо/рдУрдореА/рдлреНрд░реЗрдкреЗ-рдмреЗрдВрдЪ/рдПрдирд╡реА/
lib/python2.7/site-packages/werkzeug/serving.py", рдкрдВрдХреНрддрд┐ 193, run_wsgi рдореЗрдВ
11:13:11 рд╡реЗрдм.1 | рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (self.server.app)
11:13:11 рд╡реЗрдм.1 | рдлрд╝рд╛рдЗрд▓ "/ рд╣реЛрдо/рдУрдореА/рдлреНрд░реЗрдкреЗ-рдмреЗрдВрдЪ/рдПрдирд╡реА/
lib/python2.7/site-packages/werkzeug/serving.py", рдкрдВрдХреНрддрд┐ 184, рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ
11:13:11 рд╡реЗрдм.1 | рд▓рд┐рдЦрдирд╛ (рдбреЗрдЯрд╛)
11:13:11 рд╡реЗрдм.1 | рдлрд╝рд╛рдЗрд▓ "/ рд╣реЛрдо/рдУрдореА/рдлреНрд░реЗрдкреЗ-рдмреЗрдВрдЪ/рдПрдирд╡реА/
lib/python2.7/site-packages/werkzeug/serving.py", рдкрдВрдХреНрддрд┐ 152, рд▓рд┐рдЦрд┐рдд рдореЗрдВ
11:13:11 рд╡реЗрдм.1 | self.send_header (рдХреБрдВрдЬреА, рдорд╛рди)
11:13:11 рд╡реЗрдм.1 | рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/BaseHTTPServer.py", рд▓рд╛рдЗрди 401,
send_header . рдореЗрдВ
11:13:11 рд╡реЗрдм.1 | self.wfile.write("%s: %s\r\n" % (рдХреАрд╡рд░реНрдб, рдорд╛рди))
11:13:11 рд╡реЗрдм.1 | IOError: [Errno 32] рдЯреВрдЯрд╛ рд╣реБрдЖ рдкрд╛рдЗрдкрдХреГрдкрдпрд╛ рд╕рд╣рд╛рдпрддрд╛ рдХреАрдЬрд┐рдП
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/pallets/werkzeug/issues/954#issuecomment -247243400,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AA6MZ6DNiRIfL91CLeYOoA70W9_nQQzGks5qqOCMgaJpZM4I58cy
.
рд╣рд╛рд▓рд┐рдпрд╛ рдлрд┐рдХреНрд╕ рдХрдорд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд, рдореИрдВ app.run рдХреЛ passthrough_errors=False рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рд╡рд╛рдИрдПрдордПрдорд╡реА
рдХреНрд░реИрд╢ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓реЗ рдмрдЧ рдХреЛ 21 рджрд┐рд╕рдВрдмрд░ 2016 рдХреЛ рдЬрд╛рд░реА
рд╕рдВрд╕реНрдХрд░рдг 0.12 рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рдХреЛ 09:05:00 рдкреВрд░реНрд╡рд╛рд╣реНрди -0700 рдмрдЬреЗ, рдПрд▓рди рд░реЛрдЯрдореИрди рдиреЗ рд▓рд┐рдЦрд╛:
рдХреНрд░реИрд╢ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓реЗ рдмрдЧ рдХреЛ 21 рджрд┐рд╕рдВрдмрд░ 2016 рдХреЛ рдЬрд╛рд░реА
- рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ (рдкреБрд▓ рдЕрдиреБрд░реЛрдз # 2006) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВред
--
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЦреБрд▓реА/рдмрдВрдж рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/pallets/werkzeug/issues/954#issuecomment -287807602
рдореИрдВрдиреЗ рдЖрдЬ рд╣реА рд░рд┐рд▓реАрдЬрдиреЛрдЯреНрд╕ рджреЗрдЦреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕реБрдзрд╛рд░ рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рджреЗрдЦреЗрдВ: http://flask.pocoo.org/docs/0.12/changelog/
рд╕рдВрд╕реНрдХрд░рдг 0.12
21 рджрд┐рд╕рдВрдмрд░ 2016 рдХреЛ рдЬрд╛рд░реА, рдХреЛрдбрдиреЗрдо Punschред
https://pypi.python.org/pypi/Flask/0.12
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ Py рд╕рдВрд╕реНрдХрд░рдг рдЖрдХрд╛рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛
рдХреБрдкреНрдкреА-0.12-py2.py3-none-any.whl (md5) рдкрд╛рдпрдерди рд╡реНрд╣реАрд▓ 2.7 2016-12-21 80KB
рдХреБрдкреНрдкреА-0.12.tar.gz (md5) рд╕реНрд░реЛрдд 2016-12-21 519KB
рдЖрд╣, рд╣рд╛рдБ, рдЖрдкрдХрд╛ рдорддрд▓рдм рдлреНрд▓рд╛рд╕реНрдХ рд╣реИред рдЬрд╝рд░реВрд░ред
рд╕реЛрдо, 20 рдорд╛рд░реНрдЪ, 2017 рдХреЛ 09:22:15 рдкреВрд░реНрд╡рд╛рд╣реНрди -0700 рдкрд░, рдПрд▓рди рд░реЛрдЯрдореИрди рдиреЗ рд▓рд┐рдЦрд╛:
рдореИрдВрдиреЗ рдЖрдЬ рд╣реА рд░рд┐рд▓реАрдЬрдиреЛрдЯреНрд╕ рджреЗрдЦреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╕реБрдзрд╛рд░ рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рджреЗрдЦреЗрдВ: http://flask.pocoo.org/docs/0.12/changelog/
рд╕рдВрд╕реНрдХрд░рдг 0.12
21 рджрд┐рд╕рдВрдмрд░ 2016 рдХреЛ рдЬрд╛рд░реА, рдХреЛрдбрдиреЗрдо Punschредhttps://pypi.python.org/pypi/Flask/0.12
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ Py рд╕рдВрд╕реНрдХрд░рдг рдЖрдХрд╛рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛
рдХреБрдкреНрдкреА-0.12-py2.py3-none-any.whl (md5) рдкрд╛рдпрдерди рд╡реНрд╣реАрд▓ 2.7 2016-12-21 80KB
рдХреБрдкреНрдкреА-0.12.tar.gz (md5) рд╕реНрд░реЛрдд 2016-12-21 519KB--
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЦреБрд▓реА/рдмрдВрдж рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/pallets/werkzeug/issues/954#issuecomment -287813405
рдереНрд░реЗрдбреЗрдб = рдЯреНрд░реВ рдореЛрдб рдореЗрдВ рд╡рд░реНрдХрдЬрд╝реЗрдЧ рдкрд░ рдлреНрд▓рд╛рд╕реНрдХ 0.12.2 рдЪрд▓рд╛рддреЗ рд╕рдордп рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдиреЛрдЯ:
рдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдХрдЬрд╝реЗрдЧ рдереНрд░реЗрдб рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Werkzeug рдПрдХ IOError рдмреНрд░реЛрдХрди рдкрд╛рдЗрдк рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдорд░ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдХрд┐рд╕реА рднреА рдзрд╛рдЧреЗ рдореЗрдВ рдЯреВрдЯреЗ рдкрд╛рдЗрдк рдХреЗ рдмрд╛рдж рдлреНрд▓рд╛рд╕реНрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝ рд░рд╣реА рдереА, рд╕рднреА рд░реИрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдлрд┐рд░ рд╕реНрд╡реИрдк рдФрд░ рдЕрдВрдд рдореЗрдВ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рдУрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдорд╛рд░реЗ рдЧрдПред
рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ passthrough_errors=False in app.run рднреЗрдЬрдиреЗ рд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рдереНрд░реЗрдбреНрд╕ рдЕрдм рдирд╣реАрдВ рдорд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЗрдирд╛рдпрдд рд╕реЗ IOError рдХреЛ рд▓реЙрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд▓реЙрдЧ рднреА рдХрд░рддреЗ рд╣реИрдВ (рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрднреА рднреА рдкрд╛рд╕рдереНрд░реВ_рдПрд░рд░реНрд╕ = рдЧрд▓рдд рд╕реЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдирд╣реАрдВ рджреЗрдЦрд╛):
Exception happened during processing of request from ('127.0.0.1', 50652)
----------------------------------------
рдФрд░ рдлрд┐рд░ рд╕рд░реНрд╡рд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдореГрддрд┐ рд░рд┐рд╕рд╛рд╡ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдмрд╕ рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рд╣реИред
рдореИрдВрдиреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЙрдмрдВрдЯреВ рд╡реАрдПрдо рдкрд░ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкрд░ рдЙрдмрдВрдЯреВ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рднреА рджреЗрдЦреА:
Error on request:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 270, in run_wsgi
execute(self.server.app)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 261, in execute
write(data)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 227, in write
self.send_header(key, value)
File "/usr/lib/python2.7/BaseHTTPServer.py", line 412, in send_header
self.wfile.write("%s: %s\r\n" % (keyword, value))
IOError: [Errno 32] Broken pipe
рдореИрдВрдиреЗ рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдирдпрд╛ Ubuntu xenial VM рдмрдирд╛рдпрд╛ рдФрд░ Kubernetes рдкрд░ Ubuntu Docker рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдорд╛рди рдХреЛрдб рдЪрд▓рд╛рдпрд╛, рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджреЗрдЦреА рдЧрдИ рдФрд░ Python Flask рдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдореЗрдЬрдмрд╛рди (рдЙрдмрдВрдЯреВ рд╡реАрдПрдо) рдХреЗ рд╕рд╛рде рдореБрджреНрджрд╛ рдерд╛ред
@vhosakot рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ
рд░реВрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреЛ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдерд╛ред
рдореИрдВрдиреЗ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред
рдЕрдм, рдЬрдм рдореИрдВрдиреЗ рдЙрд╕ рдбреЗрдЯрд╛ рдкрд░ _loads()_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред
...
response = get_contents().data
if response:
data = loads(response)
..
рддреНрд░реБрдЯрд┐: IOError: [Errno 32] Broken pipe
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣рд╛рд▓рд┐рдпрд╛ рдлрд┐рдХреНрд╕ рдХрдорд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд, рдореИрдВ app.run рдХреЛ passthrough_errors=False рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рд╡рд╛рдИрдПрдордПрдорд╡реА