Werkzeug: Werkzeug RFC2616 рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 26 рдордИ 2016  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pallets/werkzeug

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ Werkzeug "рдЯреНрд░рд╛рдВрд╕рдлрд░-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ" рдпрд╛ "X-PoweredBy" рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЗрдбрд░ рдХреЛ рдХреНрд░рдорд╢рдГ "HTTP_TRANSFER_ENCODING" рдФрд░ "X_POWERED_BY" рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рджреЛ рд╢реАрд░реНрд╖рд▓реЗрдЦ "App-Header-1" рдФрд░ "App_Header_1" рджреЛрдиреЛрдВ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдореМрдЬреВрдж рдереЗ - рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗрд╡рд▓ "App_Header_1" - рджреЛрдиреЛрдВ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Werkzeug рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ . рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ RFC2616 HTTP 1.1 рдпреБрдХреНрддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рд╣реЗрдбрд░ рдХрд╛ рдирд╛рдо рдирд┐рдпрдВрддреНрд░рдг рдпрд╛ рд╡рд┐рднрд╛рдЬрдХ рд╡рд░реНрдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ рднреА рдорд╛рдиреНрдп рдЯреЛрдХрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХрдИ рдореБрджреНрджреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ "App_Header_1" рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдЖрдпрд╛ рддреЛ рдЗрд╕реЗ "HTTP_APP_HEADER_1" рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЕрдм рдлреНрд▓рд╛рд╕реНрдХ рдЬреИрд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЗрд╕реЗ "рдРрдк-рд╣реЗрдбрд░ -1" рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдХрд┐рд╕реА рднреА рд╕рдордЭрджрд╛рд░ рддреБрд▓рдирд╛ рд░рдгрдиреАрддрд┐ рдХреЗ рддрд╣рдд "App_Header_1" != "App-Header-1" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

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

рдпрджрд┐ рдЖрдк рдкреАрдИрдкреА 3333 рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рд╕реНрдкреЗрдХ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдкреАрдИрдкреА 3333 рдХрд╣рддрд╛ рд╣реИ рдХрд┐:
HTTP_ рдЪрд░
рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП HTTP рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░ (рдЕрд░реНрдерд╛рдд, рд╡реЗрд░рд┐рдПрдмрд▓ рдЬрд┐рдирдХреЗ рдирд╛рдо "HTTP_" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЗрди рдЪрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЙрдкрдпреБрдХреНрдд HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпреБрдХреНрддрд┐ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдкреАрдИрдкреА 3333 рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реЗрдбрд░ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рдпрд╛рдиреА рдпрджрд┐ "App_H" рдпрд╛ "App-H" рдореМрдЬреВрдж рд╣реИред

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

рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реНрд╡рдпрдВ WSGI рдпреБрдХреНрддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдФрд░ Werkzeug рдХреЗ рд▓рд┐рдП WSGI рдпреБрдХреНрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдЙрди рджреЛ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдореИрдВ рдРрд╕реА рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдЬрд╣рд╛рдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд░рд╣рд╛ рд╣реЛред

рдЖрд░рдПрдлрд╕реА 2616 рд╡реИрд╕реЗ рднреА рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ, рд▓реЗрдХрд┐рди рдирдП рдЖрд░рдПрдлрд╕реА рд╡реИрд╕реЗ рднреА рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Werkzeug рдПрдХ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╕реНрддрд░ рдкрд░ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП WSGI рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Werkzeug рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд░реНрд╡рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ WSGI рд╕рд░реНрд╡рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдкреАрдИрдкреА 3333 рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рд╕реНрдкреЗрдХ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдкреАрдИрдкреА 3333 рдХрд╣рддрд╛ рд╣реИ рдХрд┐:
HTTP_ рдЪрд░
рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП HTTP рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд░ (рдЕрд░реНрдерд╛рдд, рд╡реЗрд░рд┐рдПрдмрд▓ рдЬрд┐рдирдХреЗ рдирд╛рдо "HTTP_" рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЗрди рдЪрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЙрдкрдпреБрдХреНрдд HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпреБрдХреНрддрд┐ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдкреАрдИрдкреА 3333 рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реЗрдбрд░ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рдпрд╛рдиреА рдпрджрд┐ "App_H" рдпрд╛ "App-H" рдореМрдЬреВрдж рд╣реИред

WSGI CGI рдХрд╛ рдПрдХ рдкрд╛рдпрдерди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рд╣реИред рдкреАрдИрдкреА 0333 "рд╕реАрдЬреАрдЖрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░" рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕реАрдЬреАрдЖрдИ рд╕реНрдкреЗрдХ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ:

The HTTP header field name is converted to upper case, has all occurrences of "-" replaced with "_" and has `HTTP_' prepended to give the meta-variable name.

рджреЗрдЦреЗрдВ https://tools.ietf.org/html/rfc3875#section -4.1.18

рдпрд╣ рд╕рдм рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП Werkzeug, рдХрдЪреНрдЪреЗ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ WSGI рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЦрд┐рд▓рд╛рдл рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреНрдпреЛрдВ рджрд░реНрдЬ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рджреВрдд рдХреЛ рдЧреЛрд▓реА рдордд рдорд╛рд░реЛред

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

рдореЗрд░рд╛ рдорддрд▓рдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдбрд╝рд╛рдИ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдирд╣реАрдВ рд╣реИ; рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдирд┐рд╣рд┐рддрд╛рд░реНрдереЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ "рд╡рд┐рд░рд╛рд╕рдд" рдХреЗ рдкреАрдЫреЗ рдмреИрдарддреЗ рд╣реИрдВ-рдЖрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЧреЗрдЯрд╡реЗ рдЬреЛ рдЕрдиреНрдп рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╡рд╛рд▓реЗ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕рдВрд╡реЗрджрдирд╢реАрд▓/рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ (рдореЗрд░реЗ рдкрд╛рд╕ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдпрд╛рдиреА рдпрд╣ рд╣реИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИ)ред CGI 20 рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрд░рд╛рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП WSGI рдФрд░ HTTP рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдХрдЪреНрдЪреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП:
https://github.com/pallets/werkzeug/blob/03faf0569861e9d8c8c94785ad5560f735ba72da/werkzeug/serving.py#L123

(рдореЗрд░реЗ рдкрд╛рд╕ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдпрд╛рдиреА рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИ)

рддрдм рдореИрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рд╕рд░реНрд╡рд░ рд╣реИред Werkzeug рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╕реНрдирд┐рдкреЗрдЯ рдареАрдХ рдпрд╣реА рдерд╛ рдХрд┐ рдореИрдВрдиреЗ "рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП" рдХреНрдпреЛрдВ рдХрд╣рд╛ред Werkzeug рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Gunicorn + Nginx/Apache рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП)ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛ рдЖрдкрдХреА (рд╕реБрд░рдХреНрд╖рд╛) рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рд╣реЛрдЧреАред

рдбрдмреНрд▓реНрдпреВрдПрд╕рдЬреАрдЖрдИ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реАрдЬреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред WSGI CGI рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рд╕реБрдкрд░рд╕реАрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдбрдмреНрд▓реНрдпреВрдПрд╕рдЬреАрдЖрдИ _is_ рд╕реАрдЬреАрдЖрдИред рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡реИрдз рд╕реАрдЬреАрдЖрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдХрд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИред рдкрд╛рдпрдерди рд╕реАрдЬреАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ os.environ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордХрдХреНрд╖ рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдмрджрд▓рддреЗ рд╕рдордп рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рд╡рд┐рд░рд╛рд╕рдд рд╣реИред рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ Werkzeug рдХрд╛ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдХрд╣рдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдирд╣реАрдВред

рдлрд┐рд░, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореБрджреНрджрд╛ рд╡реНрдпрд░реНрде рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ Werkzeug рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реИред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдореИрдВрдиреЗ рд╕рдВрдкреВрд░реНрдг рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ nginx HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рдЪреЗрдХ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдг рдбреИрд╢ рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрддрдГ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╡рд╛рд▓реЗ рд╣реЗрдбрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреВрд▓ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИред

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