Werkzeug: рдмрдВрдж рдкрд╛рдЗрдк рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж рд╡реЗрд░реНрдХрдЬрд╝реЗрдЧ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЬреВрди 2016  ┬╖  41рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pallets/werkzeug

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╡рд░реНрдХрдЬрд╝реЗрдЧ рд╕рд░реНрд╡рд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдХреНрд▓рд╛рдЗрдВрдЯ 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 рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рд░реНрд╡рд░ рдЬреАрд╡рд┐рдд рд░рд╣рддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рд▓рд┐рдпрд╛ рдлрд┐рдХреНрд╕ рдХрдорд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд, рдореИрдВ app.run рдХреЛ passthrough_errors=False рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рд╡рд╛рдИрдПрдордПрдорд╡реА

рд╕рднреА 41 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЙрддреНрдкрд╛рджрди 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()

  • рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрд╛рдпрдерди 2.7 рдореЗрдВ, рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ 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 рдмрд╕ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдХрд┐рд╕реА рдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдбреАрдмрдЧрд░ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдореБрдЭреЗ рджреВрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓ рдЧрдпрд╛ред рджреЛ рдЬрдирд╕рдВрдкрд░реНрдХ:

  • https://github.com/pallets/flask/pull/1996 - рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдареАрдХ рдХрд░ рджреЗрдЧрд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЯреНрд░реЗрд╕рдмреИрдХ рдЕрднреА рднреА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ
  • https://github.com/pallets/werkzeug/pull/998 -- рднрд▓реЗ рд╣реА 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 рдХреЛ рдЬрд╛рд░реА

  • рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐ (рдкреБрд▓ рдЕрдиреБрд░реЛрдз # 2006) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рджреЗрд╡ рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВред

рд╕рдВрд╕реНрдХрд░рдг 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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

abathur picture abathur  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

paihu picture paihu  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mhelmetag picture mhelmetag  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

asottile picture asottile  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alexgurrola picture alexgurrola  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ