Gunicorn: рдХреБрд░реНрд╕рд┐рдпрд╛рдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдирд╡ре░ 2018  ┬╖  87рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: benoitc/gunicorn

рд╕реЗрд╡рд╛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкреЙрдб рдкрд░ рдЪрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдХрд╣реАрдВ рд╕реЗ рднреА рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдг рдХреЗ, рдпрд╣ рдмрдВрдж рдФрд░ рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
    req = six.next(parser)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 181, in __init__
    super(Request, self).__init__(cfg, unreader)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 54, in __init__
    unused = self.parse(self.unreader)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 230, in parse
    self.headers = self.parse_headers(data[:idx])
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 74, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected
[2018-11-04 17:57:55 +0330] [31] [ERROR] Socket error processing request.
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
    req = six.next(parser)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 181, in __init__
    super(Request, self).__init__(cfg, unreader)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 54, in __init__
    unused = self.parse(self.unreader)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 230, in parse
    self.headers = self.parse_headers(data[:idx])
  File "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", line 74, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected
Investigation help wanted

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

рдореИрдВрдиреЗ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рднреЗрдЬрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рджрд┐рдиреЛрдВ рд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред рдмрдЧ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ getpeername() рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЙрдХреЗрдЯ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреНрд▓рд╛рдЗрдВрдЯ, рдУрдПрд╕, рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛), рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрд╡рд╛рдж рдЙрдард╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрдирд┐рдХреЛрд░реНрди рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреБрджрдмреБрджрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореЗрд░рд╛ рдлрд┐рдХреНрд╕ рд╕рд┐рд░реНрдл рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдЗрд╕реЗ NoMoreData рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреИрдХ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЦрд░рд╛рдм рд╕рдордп рдХреЗ рд╡рд┐рдпреЛрдЧ рдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

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

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкреЙрдб рдореЗрдВ рдЧрдирд┐рдХреЛрд░реНрди рдХрд╛ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдкрд╕реНрдЯреНрд░реАрдо рд╣реИ, рдЬреИрд╕реЗ рд░рд┐рд╡рд░реНрд╕-рдкреНрд░реЙрдХреНрд╕реА, nginx?

рдирд╣реАрдВ, рдХреЛрдИ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ, рдХреЛрдИ nginx рдирд╣реАрдВ

рдореБрдЭреЗ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ: рднреНрд░рдорд┐рдд:

рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ HAProxy рд╣реИ рдФрд░ рдЗрд╕рдХреЗ HTTP рд▓реЙрдЧ рдкреНрд░рд╛рд░реВрдк рдкрд░, рдбрд┐рд╕реНрдХрдиреЗрдХреНрд╢рди рдкрд░ рд╕рддреНрд░ рд╕реНрдерд┐рддрд┐ (рджреЗрдЦреЗрдВ http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#8.5) рдпрд╣ рдЙрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ CH-- рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИред

  • рд╕реА: рдЯреАрд╕реАрдкреА рд╕рддреНрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░рд╕реНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  • рдПрдЪ: рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рд╕реЗ рдкреВрд░реНрдг, рд╡реИрдз рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдХреЗрд╡рд▓ HTTP)ред

рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдЬрдмрдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдЕрднреА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рднреЗрдЬ рд░рд╣рд╛ рдерд╛ред

рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдХреНрдпрд╛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ рднреЗрдЬрдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд░рд╣рд╛ рдерд╛?

@javabrett рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд▓реЙрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдкрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛, рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЫрд╡рд┐рдпрд╛рдВ рдпрд╛ рдЕрдиреНрдп рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдпрд╛ рдХреЛрдИ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛ рдмрдВрдж рдХрд░ рджреА рд╣реЛрдЧреА рдЬреЛ рдЕрдЪрд╛рдирдХ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджреЗрдЧреА? :рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛:

@gforcada рдХреНрдпрд╛ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ

@benoitc рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ

рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ? рдареАрдХ рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд╣реИред

рдореЗрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ django рдРрдк рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ LB рдХреЛ рдХрд┐рд╕рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░ рдЙрддреНрдкрд╛рдж рд╣реИред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдРрдк рджреВрд╕рд░реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдПрд▓рдмреА рдХреЗ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдХрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред

рдореВрд▓ рдХрд╛рд░рдг рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдХреИрд╕реЗ рд░реЛрдХреЗрдВ?

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реИ, рддреЛ рд╣рдо рд╢рд╛рдпрдж рддреНрд░реБрдЯрд┐ рдХреЛ рд╢рд╛рдВрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╢рд╛рдпрдж рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдореЗрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд▓реЙрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдереА рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реЗ рдирд┐рдЧрд░рд╛рдиреА рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рджрд┐рдпрд╛:

[2019-06-10 11:38:25 +0200] [27989] [CRITICAL] WORKER TIMEOUT (pid:17906)
[2019-06-10 11:38:25 +0200] [17906] [INFO] Worker exiting (pid: 17906)
[2019-06-10 11:38:25 +0200] [17924] [INFO] Booting worker with pid: 17924
[2019-06-10 11:38:37 +0200] [17922] [ERROR] Socket error processing request.
Traceback (most recent call last):
  File "/home/off1user/.pyenv/versions/3.6.1/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
    req = six.next(parser)
  File "/home/off1user/.pyenv/versions/3.6.1/lib/python3.6/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "/home/off1user/.pyenv/versions/3.6.1/lib/python3.6/site-packages/gunicorn/http/message.py", line 181, in __init__
    super(Request, self).__init__(cfg, unreader)
  File "/home/off1user/.pyenv/versions/3.6.1/lib/python3.6/site-packages/gunicorn/http/message.py", line 54, in __init__
    unused = self.parse(self.unreader)
  File "/home/off1user/.pyenv/versions/3.6.1/lib/python3.6/site-packages/gunicorn/http/message.py", line 230, in parse
    self.headers = self.parse_headers(data[:idx])
  File "/home/off1user/.pyenv/versions/3.6.1/lib/python3.6/site-packages/gunicorn/http/message.py", line 74, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected
[2019-06-10 11:38:47 +0200] [27989] [CRITICAL] WORKER TIMEOUT (pid:17920)
[2019-06-10 11:38:47 +0200] [17920] [INFO] Worker exiting (pid: 17920)

рдореЗрд░реЗ рдкрд╛рд╕ рдкреЙрдб рд░рдирд┐рдВрдЧ рдбреЙрдХрд░ рдЗрдореЗрдЬ dpage/pgadmin4:4.2 . рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдерд╛

OSError: [Errno 107] рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ
[реирежрезреп-режрем-резрек резреи:реиреж:рейреи +режрежрежреж] [ренрен] [рддреНрд░реБрдЯрд┐] рд╕реЙрдХреЗрдЯ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдзред
рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python3.6/site-packages/gunicorn/workers/gthread.py", рд▓рд╛рдЗрди 274 рд╣реИрдВрдбрд▓ рдореЗрдВ
рдЕрдиреБрд░реЛрдз = рдЫрд╣ред рдЕрдЧрд▓рд╛ (conn.parser)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python3.6/site-packages/gunicorn/http/parser.py", рд▓рд╛рдЗрди 41, __next__ рдореЗрдВ
self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 181, __init__ рдореЗрдВ
рд╕реБрдкрд░ (рдЕрдиреБрд░реЛрдз, рд╕реНрд╡рдпрдВ).__init__(cfg, рдЕрдкрдард┐рдд)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 54, __init__ рдореЗрдВ
рдЕрдкреНрд░рдпреБрдХреНрдд = рд╕реНрд╡.рдкрд╛рд░реНрд╕ (рд╕реНрд╡. рдЕрдкрдард┐рдд)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 230, рдкрд╛рд░реНрд╕ рдореЗрдВ
self.headers = self.parse_headers (рдбреЗрдЯрд╛ [: idx])
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 74, parse_headers рдореЗрдВ
Remote_addr = self.unreader.sock.getpeername ()

рдмрд╣реБрдд рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: https://github.com/benoitc/gunicorn/issues/2070

рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХрднреА-рдХрднреА рд╣реЛрд╕реНрдЯреЗрдб Google рдХреНрд▓рд╛рдЙрдб рд░рди рдкрд░ рдорд┐рд▓ рд░рд╣реА рд╣реИред рдиреАрдЪреЗ рд╣рдорд╛рд░реА рдХрдВрдЯреЗрдирд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

FROM ubuntu:18.04

ENV APP_HOME /app
WORKDIR $APP_HOME

RUN apt-get update \
  && apt-get install --no-install-recommends -y python3 python3-pip \
  && rm -rf /var/lib/apt/lists/*

RUN pip3 install --compile --no-cache-dir --upgrade pip setuptools

RUN mkdir invoice_processing && \
    pip install --compile --disable-pip-version-check --no-cache-dir flask gunicorn

COPY app.py ./
CMD exec gunicorn --bind :$PORT --workers 1 --threads 1 app:app

рд╕реНрдЯреИрдХрдбреНрд░рд╛рдЗрд╡рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/workers/base.py", line 134, in init_process
    self.run()
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/workers/sync.py", line 124, in run
    self.run_for_one(timeout)
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/workers/sync.py", line 68, in run_for_one
    self.accept(listener)
  File "/usr/local/lib/python3.6/dist-packages/gunicorn/workers/sync.py", line 27, in accept
    client, addr = listener.accept()
  File "/usr/lib/python3.6/socket.py", line 205, in accept
    fd, addr = self._accept()
OSError: [Errno 107] Transport endpoint is not connected

рдпрд╣рд╛рдВ рдУрдкреА рдХреЗ рд╕рдорд╛рди рдореБрджреНрджрд╛ред Google рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдкрд╛рдпрдерди 3.7, рдЧрдирд┐рдХреЛрд░реНрди 19.9.0

Traceback (most recent call last):
  File "/env/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
    req = six.next(parser)
  File "/env/lib/python3.7/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "/env/lib/python3.7/site-packages/gunicorn/http/message.py", line 181, in __init__
    super(Request, self).__init__(cfg, unreader)
  File "/env/lib/python3.7/site-packages/gunicorn/http/message.py", line 54, in __init__
    unused = self.parse(self.unreader)
  File "/env/lib/python3.7/site-packages/gunicorn/http/message.py", line 230, in parse
    self.headers = self.parse_headers(data[:idx])
  File "/env/lib/python3.7/site-packages/gunicorn/http/message.py", line 74, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected
 timestamp:  "2019-07-30T15:23:55.435130Z"

рдореБрдЭреЗ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ

GAEfan рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ред App Engine Standard Env рдореЗрдВ Python 3.7 рдХреЗ рд╕рд╛рде рдлреНрд▓рд╛рд╕реНрдХ рдРрдк рдЪрд▓рд╛рдирд╛ред

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛

рдореБрдЭреЗ Google рдРрдк рдЗрдВрдЬрди рдореЗрдВ рдкрд╛рдпрдерди 3.7 рдХреЗ рд╕рд╛рде Django рдРрдк рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИред

рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо): рдлрд╝рд╛рдЗрд▓ "/env/lib/python3.7/site-packages/gunicorn/workers/sync.py", рд▓рд╛рдЗрди 134, рд╣реИрдВрдбрд▓ рдореЗрдВ req = рдЫрд╣.рдиреЗрдХреНрд╕реНрдЯ (рдкрд╛рд░реНрд╕рд░) рдлрд╝рд╛рдЗрд▓ "/env/ lib/python3.7/site-packages/gunicorn/http/parser.py", рд▓рд╛рдЗрди рекрез, __next__ self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count) рдлрд╝рд╛рдЗрд▓ рдореЗрдВ "/env/lib /python3.7/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 181, __init__ рд╕реБрдкрд░ (рдЕрдиреБрд░реЛрдз, рд╕реНрд╡рдпрдВ) рдореЗрдВред__init__(cfg, unreader) рдлрд╝рд╛рдЗрд▓ "/env/lib/python3.7/site-packages /gunicorn/http/message.py", рд▓рд╛рдЗрди релрек, __init__ рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд = self.parse(self.unreader) рдлрд╝рд╛рдЗрд▓ "/env/lib/python3.7/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди реирейреж, рдкрд╛рд░реНрд╕ рдореЗрдВ self.headers = self.parse_headers(data[:idx]) рдлрд╝рд╛рдЗрд▓ "/env/lib/python3.7/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 74, parse_headers рдореЗрдВ Remote_addr = self .unreader.sock.getpeername() OSError: [Errno 107] рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ

рдЬреАрдПрдИ рдкрд╛рдпрдерди 3.7 рдЧрдирд┐рдХреЛрд░реНрди рдФрд░ рдлрд╛рд╕реНрдЯрдкреА/рдпреВрд╡рд┐рдХреЙрд░реНрди рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╣реА рдореБрджреНрджрд╛ред

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ Google рдХреНрд▓рд╛рдЙрдб рд░рди

рд╣рдо рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

Google рдРрдк рдЗрдВрдЬрди рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ред рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдзред рдЕрд╕рдВрдЧрдд рд╣реЛрддрд╛ рд╣реИред рдлреНрд▓рд╛рд╕реНрдХ рдРрдкред @benoitc рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдФрд░ рдореИрдВ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛, Google рдРрдк рдЗрдВрдЬрди, POST рдЕрдиреБрд░реЛрдз рднреА, рдлреНрд▓рд╛рд╕реНрдХ рдРрдкред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЬрдм рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реА рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд╕реНрдЯрдо рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдерд╛ред рдХрд╕реНрдЯрдо рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ (Google рдРрдк рдЗрдВрдЬрди рдореЗрдВ рдЖрдк рдЗрд╕реЗ app.yaml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ):

gunicorn -b :$PORT --timeout 1200 server.main:app

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреБрдЫ рднреА рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕рдХреЗ рдХрд╛рд░рдг рд╢реБрд░реВ рд╣реБрдЖ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ (рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмреАрдЪ) рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред

рдирд╣реАрдВ, рдХреЛрдИ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ, рдХреЛрдИ nginx рдирд╣реАрдВ

рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ gunicorn рдмрд┐рдирд╛ nginx ред рдореБрдЭреЗ рд╡рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ред рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк Openshift рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
gunicorn --chdir /src/app wsgi:application --bind 0.0.0.0:8000 --workers 4 --timeout 180 -k gevent

https://stackoverflow.com/questions/58389201/gunicorn-is-failing-with-oserror-errno-107-transport-endpoint-is-not-connecte

рдкреНрд░рд╢реНрди рдЦрдбрд╝рд╛ рд╣реИ

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛, Google рдРрдк рдЗрдВрдЬрди, POST рдЕрдиреБрд░реЛрдз рднреА, рдлреНрд▓рд╛рд╕реНрдХ рдРрдкред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЬрдм рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реА рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд╕реНрдЯрдо рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдерд╛ред рдХрд╕реНрдЯрдо рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ (Google рдРрдк рдЗрдВрдЬрди рдореЗрдВ рдЖрдк рдЗрд╕реЗ app.yaml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ):

gunicorn -b :$PORT --timeout 1200 server.main:app

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреБрдЫ рднреА рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕рдХреЗ рдХрд╛рд░рдг рд╢реБрд░реВ рд╣реБрдЖ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ (рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмреАрдЪ) рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред

рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕реЗ рдЖрдк рдХреНрдпрд╛ рд╕рдордЭрддреЗ рд╣реИрдВ ? рдХреНрдпрд╛ рдЖрдк рдбреАрдмрдЧ рд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? (рдХрдЪреНрдЪрд╛ http рдорджрдж рдХрд░реЗрдЧрд╛)

рдкреНрд░рд╢реНрди рдЦрдбрд╝рд╛ рд╣реИ

рд╡рд╣реА рд╕рдорд╕реНрдпрд╛, Google рдРрдк рдЗрдВрдЬрди, POST рдЕрдиреБрд░реЛрдз рднреА, рдлреНрд▓рд╛рд╕реНрдХ рдРрдкред рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЬрдм рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реА рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд╕реНрдЯрдо рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдерд╛ред рдХрд╕реНрдЯрдо рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ (Google рдРрдк рдЗрдВрдЬрди рдореЗрдВ рдЖрдк рдЗрд╕реЗ app.yaml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ):
gunicorn -b :$PORT --timeout 1200 server.main:app
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреБрдЫ рднреА рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕рдХреЗ рдХрд╛рд░рдг рд╢реБрд░реВ рд╣реБрдЖ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВрдиреЗ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ (рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмреАрдЪ) рддреЛ рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред

рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╕реЗ рдЖрдк рдХреНрдпрд╛ рд╕рдордЭрддреЗ рд╣реИрдВ ? рдХреНрдпрд╛ рдЖрдк рдбреАрдмрдЧ рд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? (рдХрдЪреНрдЪрд╛ http рдорджрдж рдХрд░реЗрдЧрд╛)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдк app рдкрде рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, _gunicorn_ рдХреЛ рдЙрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ server.main:app рддрд░рд╣ рдЖрдпрд╛рдд-рдЦреЛрдЬ рдФрд░ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

LE: рд╢рд╛рдпрдж рдпрд╣рд╛рдБ рдкрд░ рдЕрджреНрдпрддрди рдЙрджрд╛рд╣рд░рдг рдорджрдж рдХрд░рддрд╛ рд╣реИ: https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/appengine/standard_python37/hello_world (рдЗрд╕рд▓рд┐рдП рдореВрд▓ рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ рд╕реЗрд╡рд╛ рдХреЛ рдпрд╣ рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреИрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ)

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, @benoitc рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХрд╛ рдХрд╛рдо рдХрдорд╛рд▓ рдХрд╛ рд╣реИред

рдореИрдВ Google рдХреНрд▓рд╛рдЙрдб рд░рди w/gunicorn рдкрд░ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рд╣реИ рдЙрд╕реЗ рдореИрдВ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЕрджреНрд╡рд┐рддреАрдп рдирд╣реАрдВ рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред рдореИрдВ рдПрдХ рдбреЛрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рд░реНрд╡рд░ (рдФрд░ рдХреЛрдИ рдкреНрд░реЙрдХреНрд╕реА) рдХреЗ рд░реВрдк рдореЗрдВ Gunicorn рдХреЗ рд╕рд╛рде рдПрдХ рдХреБрдкреНрдкреА рдРрдк рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБред

рдЯреНрд░реЗрд╕рдмреИрдХ (рдЬреАрд╕реА рдХрдВрд╕реЛрд▓ рд╕реЗ):

  File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 104, in init_process
    super(ThreadWorker, self).init_process()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.run()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 211, in run
    callback(key.fileobj)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 127, in accept
    sock, client = listener.accept()
  File "/usr/local/lib/python3.7/socket.py", line 212, in accept
    fd, addr = self._accept()
OSError: [Errno 107] Transport endpoint is not connected

рдФрд░ Google рдХрд╛ рдЙрдкрд░реЛрдХреНрдд рдХрд╛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ:

OSError: [Errno 107] Transport endpoint is not connected
at accept (/usr/local/lib/python3.7/socket.py:212)
at accept (/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py:127)
at run (/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py:211)
at init_process (/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py:134)
at init_process (/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py:104)
at spawn_worker (/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py:583)

рдЕрдЧрд░ рдХреБрдЫ рдФрд░ рд╣реИ рдЬреЛ рдореИрдВ рдпрд╣рд╛рдВ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдорджрдж рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП ENOTCONN рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдПрдХ рд╣реА рдореБрджреНрджрд╛, Google рдРрдк рдЗрдВрдЬрди, рдПрдХ Django рдРрдк рдХреА рд╕реЗрд╡рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧрдирд┐рдХреЛрд░реНрди, рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░рддрд┐рд╢рдд рдЗрд╕ рддрд░рд╣ рдорд░ рдЬрд╛рддрд╛ рд╣реИ:

image

entrypoint: gunicorn -b :$PORT wsgi_api:application

рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП ENOTCONN рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реВрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВ рдпрджрд┐ рдореИрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП ENOTCONN рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реВрдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВ рдпрджрд┐ рдореИрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореБрдЭреЗ рдкреАрдЖрд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдорджрдж рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВред

рдореБрдЭреЗ рдкреАрдЖрд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдорджрдж рдХреА рдЬрд░реВрд░рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВред

рд╕рднреА рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП ENOTCONN рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреГрдкрдпрд╛ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг gunicorn==19.9.0 рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╣реИред рдореБрдЭреЗ gunicorn==19.7.1 рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рджреМрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдХреГрдкрдпрд╛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдмрд▓реНрдХрд┐ рдЕрдВрддрд┐рдо рдЧреБрд░реБ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред 20.0 рдЖрдЦрд┐рд░рдХрд╛рд░ рдЖрдЬ рдЖ рдЬрд╛рдПрдЧрд╛ рдореБрдЭреЗ рд╕рд╛рдЗрдб рдЯреНрд░реИрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? рдЖрдк рдЗрд╕рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рд▓рдВрдмрд╛рдИ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдФрд░ рд╕рд╣ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдбрд╛рдХ рд╕реЗ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреНрдпреЛрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ...

@ cmin764 fflask рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛

@benoitc рдЬрдм рдореИрдВ gunicorn==19.9.0 рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ рддрдм рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд░рд╛рдм рдереАред рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреВрд░реА рд▓реЛрдбрд┐рдВрдЧ рдбрд╛рдЙрди рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдкреБрд░рд╛рдиреЗ gunicorn==19.7.1 рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЯреВрдЯ рд░рд╣реЗ рд╣реИрдВ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдЕрдЪреНрдЫреА рд▓рдЧ рд░рд╣реА рд╣реИред рдореИрдВ рдХреЛрдИ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╣реЗрдбрд░ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдореИрдВ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг 20.0 рдХрд╛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред

рдирд╣реАрдВ, рдХреЛрдИ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ, рдХреЛрдИ nginx рдирд╣реАрдВ

рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ gunicorn рдмрд┐рдирд╛ nginx ред рдореБрдЭреЗ рд╡рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рдерд╛ред рдореЗрд░рд╛ рд╕реЗрдЯрдЕрдк Openshift рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
gunicorn --chdir /src/app wsgi:application --bind 0.0.0.0:8000 --workers 4 --timeout 180 -k gevent

https://stackoverflow.com/questions/58389201/gunicorn-is-failing-with-oserror-errno-107-transport-endpoint-is-not-connecte

рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде gunicorn=19.7.1 I was not able to run with the gevent`. рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЧрдирд┐рдХреЛрд░реНрди рдХрдорд╛рдВрдб рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ

gunicorn apps.wsgi:application --bind 0.0.0.0:8000 --workers 4 --timeout 180

рдореИрдВ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИред рдкреНрд░рддрд┐рдкреБрд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

19.7.1 (рд╕рдмрд╕реЗ рд╣рд╛рд▓ рд╕реЗ рдбрд╛рдЙрдирдЧреНрд░реЗрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Google рдРрдк рдЗрдВрдЬрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдкреБрд╢ рдХреНрдпреВ рдлреАрдбрд┐рдВрдЧ рд╡рд░реНрдХрд░реНрд╕, рдФрд░ рд╡рд░реНрдХрд░реНрд╕ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ http рдкрд░ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗред

19.7.1 (рд╕рдмрд╕реЗ рд╣рд╛рд▓ рд╕реЗ рдбрд╛рдЙрдирдЧреНрд░реЗрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Google рдРрдк рдЗрдВрдЬрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдкреБрд╢ рдХреНрдпреВ рдлреАрдбрд┐рдВрдЧ рд╡рд░реНрдХрд░реНрд╕, рдФрд░ рд╡рд░реНрдХрд░реНрд╕ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ http рдкрд░ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗред

рдпрд╣ рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╢реЙрдЯ рджреВрдВрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА?

рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд░ рдирд╡реАрдирддрдо 20.0.0 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдУрдкрдирд╢рд┐рдлреНрдЯ v3.11.135, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ v1.11.0) - рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдЙрдЪреНрдЪ рднрд╛рд░ (рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг 20 рдкреИрд░рд▓рд▓ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ) рдкрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреЙрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рд┐рдВрдЧрд▓ рдкреЙрдб рдкрд░рд┐рдгрд╛рдо рдЧрд╛рд░рдВрдЯреАрдХреГрдд рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдпрд╣ 3 рд╕рд┐рдВрдХ рд╡рд░реНрдХрд░реНрд╕ рдХреЙрдиреНрдлрд┐рдЧ рд╣реИред 19.7.1 рдкреЙрдб рд▓реЙрдЧ рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣ рд╣реА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд

2019-11-12 16:08:56,982 рддреНрд░реБрдЯрд┐ gunicorn.error glogging 277 glogging.py рд╕реЙрдХреЗрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрд░реЛрдзред
рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", рд▓рд╛рдЗрди
134, рд╕рдВрднрд╛рд▓ рдореЗрдВ
рдЕрдиреБрд░реЛрдз = рдЫрд╣ред рдЕрдЧрд▓рд╛ (рдкрд╛рд░реНрд╕рд░)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/parser.py", рд▓рд╛рдЗрди 41, __next__ рдореЗрдВ
self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 181, __init__ рдореЗрдВ
рд╕реБрдкрд░ (рдЕрдиреБрд░реЛрдз, рд╕реНрд╡рдпрдВ).__init__(cfg, рдЕрдкрдард┐рдд)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 54, __init__ рдореЗрдВ
рдЕрдкреНрд░рдпреБрдХреНрдд = рд╕реНрд╡.рдкрд╛рд░реНрд╕ (рд╕реНрд╡. рдЕрдкрдард┐рдд)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 230, рдкрд╛рд░реНрд╕ рдореЗрдВ
self.headers = self.parse_headers (рдбреЗрдЯрд╛ [: idx])
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 74, parse_headers рдореЗрдВ
Remote_addr = self.unreader.sock.getpeername ()
OSError: [Errno 107] рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ

рдУрдкрдирд╢рд┐рдлреНрдЯ рдкрд░ рдирд╡реАрдирддрдо 20.0.0 рдХреА рдХреЛрд╢рд┐рд╢ рдХреА (рдУрдкрдирд╢рд┐рдлреНрдЯ v3.11.135, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ v1.11.0) - рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛ рд╡рд╣ рддреНрд░реБрдЯрд┐ рдЙрдЪреНрдЪ рднрд╛рд░ (рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг 20 рдкреИрд░рд▓рд▓ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ) рдкрд░ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреЙрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рд┐рдВрдЧрд▓ рдкреЙрдб рдкрд░рд┐рдгрд╛рдо рдЧрд╛рд░рдВрдЯреАрдХреГрдд рддреНрд░реБрдЯрд┐ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред рдпрд╣ 3 рд╕рд┐рдВрдХ рд╡рд░реНрдХрд░реНрд╕ рдХреЙрдиреНрдлрд┐рдЧ рд╣реИред 19.7.1 рдкреЙрдб рд▓реЙрдЧ рдкрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рддрд░рд╣ рд╣реА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд

2019-11-12 16:08:56,982 рддреНрд░реБрдЯрд┐ gunicorn.error glogging 277 glogging.py рд╕реЙрдХреЗрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрд╕рд╛рдзрди рдЕрдиреБрд░реЛрдзред
рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/workers/sync.py", рд▓рд╛рдЗрди
134, рд╕рдВрднрд╛рд▓ рдореЗрдВ
рдЕрдиреБрд░реЛрдз = рдЫрд╣ред рдЕрдЧрд▓рд╛ (рдкрд╛рд░реНрд╕рд░)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/parser.py", рд▓рд╛рдЗрди 41, рдЕрдЧрд▓реЗ рдореЗрдВ
self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 181, init рдореЗрдВ
рд╕реБрдкрд░ (рдЕрдиреБрд░реЛрдз, рд╕реНрд╡рдпрдВ)ред init (cfg, рдЕрдкрдард┐рдд)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 54, init рдореЗрдВ
рдЕрдкреНрд░рдпреБрдХреНрдд = рд╕реНрд╡.рдкрд╛рд░реНрд╕ (рд╕реНрд╡. рдЕрдкрдард┐рдд)
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 230, рдкрд╛рд░реНрд╕ рдореЗрдВ
self.headers = self.parse_headers (рдбреЗрдЯрд╛ [: idx])
рдлрд╝рд╛рдЗрд▓ "/opt/rh/rh-python36/root/usr/lib/python3.6/site-packages/gunicorn/http/message.py", рд▓рд╛рдЗрди 74, parse_headers рдореЗрдВ
Remote_addr = self.unreader.sock.getpeername ()
OSError: [Errno 107] рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ

рдХреНрдпрд╛ рдЖрдк рд░рд╛рдЙрдЯрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХреНрдпрд╛ рдЖрдк рд░рд╛рдЙрдЯрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдмрдврд╝рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдЗрд╕ рд▓реАрдб рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА : рдУрдкрдирд╢рд┐рдлреНрдЯ рд░реЗрдбреАрдиреЗрд╕ рдЬрд╛рдВрдЪ рд╕реЗрдЯрдЕрдк рдмрд╣реБрдд рдЖрд╢рд╛рд╡рд╛рджреА рдерд╛ (рдРрдк рдиреЗ рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓рд┐рдпрд╛), рдФрд░ рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рдмрд╛рд╣рд░реА рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░ (рдПрд╡реАрдЖрдИ) рдиреЗ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЙрдард╛рдпрд╛ рдФрд░ рдкреЙрдб рдХреЛ рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ рдкреВрд▓ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ред

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЧрдирд┐рдХреЛрд░реНрди = 19.9.0 рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рдкреБрдирд░рд╛рд░рдВрдн рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рдореИрдВ Google Kubernetes Engine рдкрд░ рддреИрдирд╛рдд рд╣реВрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдлреНрд▓рд╛рд╕реНрдХ рдРрдк рд╣реИ -
рдкреНрд░рд╡реЗрд╢:
command: ["sh", "-c", "gunicorn -b 0.0.0.0:$${PORT} -c gunicorn_config.py run:app"]
рд╡рд┐рдиреНрдпрд╛рд╕:

worker_temp_dir = '/dev/shm'
worker_class = 'gthread'
worker = 2
threads = 2
worker_connections = 1000
timeout = 180
keepalive = 2
backlog = 2048
accesslog = '-'
errorlog = '-'

рддреНрд░реБрдЯрд┐:
Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/gthread.py", line 274, in handle req = six.next(conn.parser) File "/usr/local/lib/python2.7/site-packages/gunicorn/http/parser.py", line 41, in __next__ self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count) File "/usr/local/lib/python2.7/site-packages/gunicorn/http/message.py", line 181, in __init__ super(Request, self).__init__(cfg, unreader) File "/usr/local/lib/python2.7/site-packages/gunicorn/http/message.py", line 54, in __init__ unused = self.parse(self.unreader) File "/usr/local/lib/python2.7/site-packages/gunicorn/http/message.py", line 230, in parse self.headers = self.parse_headers(data[:idx]) File "/usr/local/lib/python2.7/site-packages/gunicorn/http/message.py", line 74, in parse_headers remote_addr = self.unreader.sock.getpeername() File "/usr/local/lib/python2.7/socket.py", line 228, in meth return getattr(self._sock,name)(*args) error: [Errno 107] Transport endpoint is not connected

рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди 19.7.1 рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реИ?

рдХреНрдпрд╛ рдХреЛрдИ рддреИрдирд╛рддреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рднрдВрдбрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕реЗрдЯ рдЕрдк рдХрд░рдирд╛ рд╣реИред

рдирдорд╕реНрддреЗ @tilgovi Fastapi рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЧрдирд┐рдХреЛрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рднрдВрдбрд╛рд░ рдХрд╛ рдПрдХ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдФрд░ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИред рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдРрдк рдЗрдВрдЬрди рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╡рд╣ рднрдВрдбрд╛рд░, рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдпрд╣рд╛рдВ рд╡рд╣реА рдореБрджреНрджрд╛:
рдЧрдирд┐рдХреЛрд░реНрди 19.9.0 + рдЬреАрдХреЗрдИ рднреА рддрдм рд╣реБрдЖ рдЬрдм рд╣рдо рдЙрдЪреНрдЪ рднрд╛рд░ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣реЗ рдереЗред

рд╕реЗрдореА

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдореЗрд░рд╛ рдРрдк рд╣реИред yaml

runtime: python37
entrypoint: gunicorn -b :$PORT truestory:app


handlers:
- url: /static
  static_dir: truestory/static

- url: /favicon\.ico
  static_files: truestory/static/img/favicon.ico
  upload: truestory/static/img/favicon\.ico

- url: /.*
  secure: always
  redirect_http_response_code: 301
  script: auto

рдФрд░ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрддреНрдкрд╛рджрди рд░рди:

run: export FLASK_CONFIG = production
run:
    # Run main server in production mode with Gunicorn (remote database).
    <strong i="12">@echo</strong> "[i] Starting server with Gunicorn."
    gunicorn -b :$(PORT) truestory:app

рддреЛ рд╢рд╛рдпрдж рдпрд╣ GAE рдкрд░ рдХреБрдЫ рдЕрд╕реНрдерд╛рдпреА рдерд╛ред

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред Gunicorn with Gevent, рд╕рд╛рдордиреЗ рдмрд╕ рдПрдХ Google HTTP LB рд╣реИред (рдХреЛрдИ Nginx, рдпрд╛ рдЕрдиреНрдп рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВ)ред рд╕рд╛рдорд╛рди рд╣рдлреНрддреЛрдВ рддрдХ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:

Traceback (most recent call last):
  File "XXX/gunicorn/workers/base_async.py", line 65, in handle
    util.reraise(*sys.exc_info())
  File "XXX/gunicorn/util.py", line 625, in reraise
    raise value
  File "XXX/gunicorn/workers/base_async.py", line 48, in handle
    req = next(parser)
  File "XXX/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "XXX/gunicorn/http/message.py", line 186, in __init__
    super().__init__(cfg, unreader)
  File "XXX/gunicorn/http/message.py", line 53, in __init__
    unused = self.parse(self.unreader)
  File "XXX/gunicorn/http/message.py", line 235, in parse
    self.headers = self.parse_headers(data[:idx])
  File "XXX/gunicorn/http/message.py", line 73, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected

рдЧреЗрдирд┐рдХреЙрд░реНрди 20.0.4ред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдЙрд╕рдХрд╛ "рдЙрдЪреНрдЪ рднрд╛рд░ рдХреЗ рддрд╣рдд рд╣реЛрддрд╛ рд╣реИ" рдпрд╛, рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдмрд╛рдд "рдкреНрд░рддрд┐ рдорд╛рд╣ рдХреБрдЫ рдмрд╛рд░" рд╣реЛрддреА рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИред

@JordanP рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ Google рдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реИ? Google LB рд╕реЗ рдкрд┐рдВрдЧ рдХреИрд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ Google рдПрд▓рдмреА рдкрдХреНрд╖ рдкрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд░рддрд╛ рд╣реИ?

рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдПрдХ HTTP рдПрдХ рд╣реИ, рдмрд╣реБрдд рд░реВрдврд╝рд┐рд╡рд╛рджреА (рд╕рдордпрдмрд╛рд╣реНрдп 5 рд╕реЗрдХрдВрдб, рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдореГрдд рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рдЧрд╛рддрд╛рд░ 10 рд╡рд┐рдлрд▓рддрд╛рдПрдВ)ред

Google рдХреА рдУрд░ рд╕реЗ, Gunicorn рдХреЗ рд╕рд╛рдордиреЗ HTTP LB рдиреЗ 40k 502 рд╕реЗ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ (рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдореЗрдВ) рдирд┐рдореНрди рдХрд╛рд░рдг рдХреЗ рд╕рд╛рде рд▓реМрдЯрд╛ рджреА: "backend_timeout":
image

рдореБрдЭреЗ 4 рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ (4 рдХрдВрдЯреЗрдирд░) рдорд┐рд▓реАрдВ, рд╡реЗ рд╕рднреА рдЙрд╕ рд░рд╛рдд ~ рдЙрд╕реА рд╕рдордп рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЧрдИрдВред рддреЛ, рдпрд╣ рдПрдХ рдЬрдВрдЧрд▓реА рдЕрдиреБрдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Google рдХреЛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг, рдПрдХ рдлрд┐рдХреНрд╕, рдЬреЛ рдХреБрдЫ рднреА, рдпрд╣ рд╕рдм рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИ, рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ (рдЬреИрд╕рд╛ рдХрд┐ рдЧрдиреАрдХреЛрд░реНрдо рджреНрд╡рд╛рд░рд╛ рджреЗрдЦрд╛ рдЧрдпрд╛) рдПрдХ рдЕрдорд┐рддреНрд░/рдирд╣реАрдВ рдореЗрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ- рдЕрдкреЗрдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ред рдХрд┐рд╕реА рднреА рддрд░рд╣, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдЬреЛ рднреА рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП Gunicorn рдХреЛ рд▓рдЪреАрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

ENOTCONN рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░рдирд╛ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ Python stdlib рдХреЗ рдХреБрдЫ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ: https://bugs.python.org/issue30319#msg297643

рд╡рд╣реА рддреНрд░реБрдЯрд┐ред

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
    req = six.next(parser)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 181, in __init__
    super(Request, self).__init__(cfg, unreader)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 54, in __init__
    unused = self.parse(self.unreader)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 230, in parse
    self.headers = self.parse_headers(data[:idx])
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 74, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected

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

@uree рдХреМрди рд╕рд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛? рдЖрдк рдЧрдирд┐рдХреЛрд░реНрди рдХреИрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ?

рд╕реАрдПрдордбреА ["рдЧрдирд┐рдХреЛрд░реНрди", " рдРрдк: рдРрдк ", "-рдмреА", "0.0.0.0:8001", "-рдЯреА 90"]
рдореИрдВрдиреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ
рд╕реАрдПрдордбреА ["рдЧрдирд┐рдХреЛрд░реНрди", " рдРрдк: рдРрдк ", "-рдмреА", "0.0.0.0:8001", "-рдЯреА 90", "--рдкреНрд░реАрд▓реЛрдб"]

рдореИрдВ рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░ рдкрд░ рдбреЙрдХрдЯрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЗ рд╕рд╛рде рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рд╕рд╛рде django рдЪрд▓рд╛рддреЗ рд╕рдордп рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред
Gunicorn рд╕рдВрд╕реНрдХрд░рдг 20.0.4

version: '3.7'

services:
  backend:
    build: .
    command: gunicorn --workers=2 --thread=2 --log-file=- --certfile=/etc/nginx/ssl/xxx.crt --keyfile=/etc/nginx/ssl/xxx.key backend.config.wsgi:application --bind 0.0.0.0:8000
    restart: unless-stopped
    volumes:
      - .:/usr/src/app/
      - ../media:/backend/media
      - /root/certs/:/etc/nginx/ssl/
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev
    environment:
      - Debug=True
      # - GUNICORN_WORKERS=2
      # - GUNICORN_ERRORLOG=-
      # - GUNICORN_THREADS=4
      # - GUNICORN_ACCESSLOG=-
    depends_on:
      - db
  db:
    image: postgres:12.0-alpine
    restart: unless-stopped
    volumes:
      - ../postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=xxxx
      - POSTGRES_PASSWORD=xxxx
      - POSTGRES_DB=archlink
  frontend:
    build: ./frontend
    volumes:
      - ./frontend:/app
      - /app/node_modules
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - BACKEND_URL=http://142.93.235.130:8000/
    depends_on:
      - backend
    # command: npm start
  nginx:
    image: nginx:latest
    restart: unless-stopped
    volumes:
      - ./nginx/nginx-proxy.conf:/etc/nginx/conf.d/default.conf:ro
      - ./frontend/build:/var/www/frontend # maps frontend build inside nginx
      - /root/certs/:/etc/nginx/ssl/
    ports:
      - 80:8080
      - 443:443
    depends_on:
      - frontend

рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣рд░ 4-5 рдорд┐рдирдЯ рдореЗрдВ рд╣реЛрддреА рд╣реИ:

backend_1   | [2020-03-04 12:05:58 +0000] [18] [ERROR] Socket error processing request.
backend_1   | Traceback (most recent call last):
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/gthread.py", line 266, in handle
backend_1   |     req = next(conn.parser)
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/http/parser.py", line 41, in __next__
backend_1   |     self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 186, in __init__
backend_1   |     super().__init__(cfg, unreader)
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 53, in __init__
backend_1   |     unused = self.parse(self.unreader)
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 198, in parse
backend_1   |     self.get_data(unreader, buf, stop=True)
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 189, in get_data
backend_1   |     data = unreader.read()
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/http/unreader.py", line 37, in read
backend_1   |     d = self.chunk()
backend_1   |   File "/usr/local/lib/python3.8/site-packages/gunicorn/http/unreader.py", line 64, in chunk
backend_1   |     return self.sock.recv(self.mxchunk)
backend_1   |   File "/usr/local/lib/python3.8/ssl.py", line 1226, in recv
backend_1   |     return self.read(buflen)
backend_1   |   File "/usr/local/lib/python3.8/ssl.py", line 1101, in read
backend_1   |     return self._sslobj.read(len)
backend_1   | OSError: [Errno 0] Error

рд╡рд╣реА рддреНрд░реБрдЯрд┐ред

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 134, in handle
    req = six.next(parser)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 181, in __init__
    super(Request, self).__init__(cfg, unreader)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 54, in __init__
    unused = self.parse(self.unreader)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 230, in parse
    self.headers = self.parse_headers(data[:idx])
  File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 74, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected

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

рдЕрджреНрдпрддрди рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рдереАред рдпрд╣ рд╕рдмрдорд┐рдЯ рдмрдЯрди рдкрд░ рдСрдирдХреНрд▓рд┐рдХ jQuery рдИрд╡реЗрдВрдЯ рдХреЗ рдХрд╛рд░рдг рд╣реБрдЖ рдерд╛ред рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрд╛рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдХреНрдпрд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдХреНрдпрд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рд╕рдВрджрд░реНрдн рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдпрд╣ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХреЗрдВ?

рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ? рдХреЛрдИ рджреБрд░реНрд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ, рдЖрдзрд╛ рдмрдВрдж рдХрдиреЗрдХреНрд╢рди рдХрднреА рднреА рдПрдХ Gunicorn рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрд░реИрд╢ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЪрд╛рд╣реЗ рд╡рд╣ Kubernetes, Mesos, docker, Baremetal рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ: Gunicorn рд╕рдмрд╕реЗ рд▓рдЪреАрд▓рд╛ рд╣реЛред

рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп/рдЖрд╕рд╛рди рдкреБрдирд░реБрддреНрдкрд╛рджрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕реАрдзреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдПрдХ рдЧрдирд┐рдХреЛрд░реНрди рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВред

рдареАрдХ рд╣реИ, рдЬрдм рдЧрдирд┐рдХреЛрд░реНрди nginx рдХреЗ рдкреАрдЫреЗ рд╣реИ рдФрд░ рдХреБрдЫ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдРрд╕реА рджреБрд░реНрдШрдЯрдирд╛ рдХрднреА рдирд╣реАрдВ рд╣реБрдИ рдереА
рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рдХрд┐рд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкрд░ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЧрдирд┐рдХреЛрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдкреАрдЫреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреМрди
рдПрдХ?

рдордВрдЧрд▓ резреж рдорд╛рд░реНрдЪ реирежреиреж рдХреЛ резрез:релреи рдкрд░ рдЬреЙрд░реНрдбрди рдкрд┐рдЯрд┐рдпрд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ? рдХреЛрдИ рджреБрд░реНрд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ, рдЖрдзрд╛
рдмрдВрдж рдХрдиреЗрдХреНрд╢рди рдХрднреА рднреА рдПрдХ Gunicorn рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрд░реИрд╢ рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЪрд╛рд╣реЗ
рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рдореЗрд╕реЛрд╕, рдбреЙрдХрдЯрд░, рдмреЗрдпрд░рдореЗрдЯрд▓ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ: рдЧрдирд┐рдХреЛрд░реНрди рдореЛрд╕реНрдЯ рдмреА
рд▓рдЪреАрд▓рд╛ред

рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп/рдЖрд╕рд╛рди рдкреБрдирд░реБрддреНрдкрд╛рджрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ
рд╕реАрдзреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рд░ рдПрдХ рдЧрдирд┐рдХреЛрд░реНрди рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо
рдЗрдВрдЯрд░рдиреЗрдЯред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/benoitc/gunicorn/issues/1913?email_source=notifications&email_token=AAADRITYFZI4GINCSG752OTRGYLXDA5CNFSM4GBYQQA2YY3PNVWWK3TUL52HS4DFVREXG43VMVB02#ILOPWZ-5JN5JNV
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAADRIRSO4T7WQTS6GMHLO3RGYLXDANCNFSM4GBYQQAQ
.

>

рдореЗрд░реЗ рдореЛрдмрд╛рдЗрд▓ рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛

рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдкреАрдЫреЗ рдПрдХ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдИрд╕реАрдПрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ред
рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рднреА рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ (рдХрдВрдЯреЗрдирд░реЛрдВ/рдХрд╛рд░реНрдпреЛрдВ) рдкрд░ рд╣реБрдЖ
рдкрд╛рдЗрдк рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ Gunicornред рдХреЛрдИ Nginx рдирд╣реАрдВ, рдХреЛрдИ рдкреНрд░реЙрдХреНрд╕реА рдирд╣реАрдВред
рдкрд╛рдпрдерди 3.7.6
Gunicorn рд╕рдВрд╕реНрдХрд░рдг: 20.0.4
рдЗрд╕ рддрд░рд╣ рджреМрдбрд╝реЗрдВ:
gunicorn --bind 0.0.0.0:8000 --workers 1 --threads 5 --max-requests 100 --timeout 300 application.wsgi
рд▓реЙрдЧ:
[2020-03-10 22:28:38 +0100] [105] [ERROR] Socket error processing request. Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 266, in handle req = next(conn.parser) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/parser.py", line 41, in __next__ 22:28:37.814 WARNING [django.request:log_response #228] Not Found: /443 22:28:36.176 WARNING [django.request:log_response #228] Not Found: /443 [2020-03-10 22:28:35 +0100] [105] [ERROR] Socket error processing request. Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 266, in handle req = next(conn.parser) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/parser.py", line 41, in __next__ self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 186, in __init__ super().__init__(cfg, unreader) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 53, in __init__ unused = self.parse(self.unreader) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 235, in parse self.headers = self.parse_headers(data[:idx]) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 73, in parse_headers remote_addr = self.unreader.sock.getpeername() OSError: [Errno 107] Transport endpoint is not connected [2020-03-10 22:28:35 +0100] [105] [ERROR] Socket error processing request. Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 266, in handle req = next(conn.parser) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/parser.py", line 41, in __next__ self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 186, in __init__ super().__init__(cfg, unreader) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 53, in __init__ unused = self.parse(self.unreader) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 235, in parse self.headers = self.parse_headers(data[:idx]) File "/usr/local/lib/python3.7/site-packages/gunicorn/http/message.py", line 73, in parse_headers remote_addr = self.unreader.sock.getpeername() OSError: [Errno 107] Transport endpoint is not connected

рдХреНрдпрд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдк рдЙрд╕ рд╕рдВрджрд░реНрдн рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдпрд╣ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреА рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХреЗрдВ?

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИред рддреНрд░реБрдЯрд┐ рдХрд╣реАрдВ рд╕реЗ рднреА рд╣реЛрддреА рд╣реИ, рдХреЛрдИ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред
рдирд┐рдпрдорд┐рдд рдЖрд░рдИрдПрд╕рдЯреА рдПрдкреАрдЖрдИ рдПрдВрдбрдкреЙрдЗрдВрдЯреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ django рдРрдк рдореЗрдВ рдПрдХ django рдЬреЙрдм рд╢реЗрдбреНрдпреВрд▓рд░ рд╣реИред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЖрдк docker-compose.yml рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдХреБрдЫ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рдХрднреА-рдХрднреА рдЧрдирд┐рдХреЛрд░реНрди 19.9.0 рдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИрдкреНрд░реЛрдХреНрд╕реА рдХреЗ рдкреАрдЫреЗ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВ (рдХреЗрд╡рд▓ HTTP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, PROXY рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)ред

Mar 17 21:38:07 redacted.com gunicorn[25470]: https://redacted.com/redacted[2020-03-17 21:38:07 +0000] [25495] [ERROR] Socket error processing request.
Mar 17 21:38:07 redacted.com gunicorn[25470]: Traceback (most recent call last):
Mar 17 21:38:07 redacted.com gunicorn[25470]:   File "/var/venvs/software-venv/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
Mar 17 21:38:07 redacted.com gunicorn[25470]:     req = six.next(parser)
Mar 17 21:38:07 redacted.com gunicorn[25470]:   File "/var/venvs/software-venv/lib/python3.6/site-packages/gunicorn/http/parser.py", line 41, in __next__
Mar 17 21:38:07 redacted.com gunicorn[25470]:     self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
Mar 17 21:38:07 redacted.com gunicorn[25470]:   File "/var/venvs/software-venv/lib/python3.6/site-packages/gunicorn/http/message.py", line 181, in __init__
Mar 17 21:38:07 redacted.com gunicorn[25470]:     super(Request, self).__init__(cfg, unreader)
Mar 17 21:38:07 redacted.com gunicorn[25470]:   File "/var/venvs/software-venv/lib/python3.6/site-packages/gunicorn/http/message.py", line 54, in __init__
Mar 17 21:38:07 redacted.com gunicorn[25470]:     unused = self.parse(self.unreader)
Mar 17 21:38:07 redacted.com gunicorn[25470]:   File "/var/venvs/software-venv/lib/python3.6/site-packages/gunicorn/http/message.py", line 230, in parse
Mar 17 21:38:07 redacted.com gunicorn[25470]:     self.headers = self.parse_headers(data[:idx])
Mar 17 21:38:07 redacted.com gunicorn[25470]:   File "/var/venvs/software-venv/lib/python3.6/site-packages/gunicorn/http/message.py", line 74, in parse_headers
Mar 17 21:38:07 redacted.com gunicorn[25470]:     remote_addr = self.unreader.sock.getpeername()
Mar 17 21:38:07 redacted.com gunicorn[25470]: OSError: [Errno 107] Transport endpoint is not connected


рд╕рд░реНрд╡рд░ рдЙрд╕ рд╕рдордп рд▓рдЧрднрдЧ 30 рдЕрдиреБрд░реЛрдз/рд╕реЗрдХрдВрдб рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реА рд▓реЙрдЧ рд▓рд╛рдЗрди рдЦрд░рд╛рдм рд╣реЛ рдЧрдИ рдереА, рд╕рдВрднрд╡рдд: рдмрдлрд░ рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рдХрдИ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдХрд╛рд░рдгред

Gunicorn рдХреЛ systemd: ExecStart=/var/venvs/software-venv/bin/gunicorn -b 0.0.0.0:6000 -w 4 app:app рдФрд░ LimitNOFILE=49152 рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдореИрдВрдиреЗ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рднреЗрдЬрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреБрдЫ рджрд┐рдиреЛрдВ рд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред рдмрдЧ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ getpeername() рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЙрдХреЗрдЯ рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдХреНрд▓рд╛рдЗрдВрдЯ, рдУрдПрд╕, рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛), рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрд╡рд╛рдж рдЙрдард╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрдирд┐рдХреЛрд░реНрди рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдирд╣реАрдВ рдкрдХрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмреБрджрдмреБрджрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореЗрд░рд╛ рдлрд┐рдХреНрд╕ рд╕рд┐рд░реНрдл рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдЗрд╕реЗ NoMoreData рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕реНрдЯреИрдХ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЦрд░рд╛рдм рд╕рдордп рдХреЗ рд╡рд┐рдпреЛрдЧ рдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред

рдпрд╣ рдкреАрдЖрд░ рднреА рд╣реИ https://github.com/benoitc/gunicorn/pull/2277

рдореИрдВ Kubernetes (1.16.8-gke.15) рдФрд░ рдирд╡реАрдирддрдо Gunicorn (20.0.4), рдФрд░ Python 3.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрджрд┐ рдореИрдВ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП 1 рд╕реЗрдХрдВрдб рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреА рджреЗрд░реА рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реВрдВ, рддреЛ 360 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рд╣реЛрдиреЗ рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред Gunicorn рдХреЗ рдЕрдВрджрд░ рдХрд╛ рдХрд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдорд┐рдирдЯ рдмрд╛рдж рдпрд╣ рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ:

Socket error processing request.
OSError: [Errno 107] Transport endpoint is not connected

рдЬрдм рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдФрд░ рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрднреА рднреА рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВред рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ рдЕрдЪреНрдЫреА рджрд┐рдЦрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреА рдУрд░ рд╕реЗ рдХреЛрдИ рд▓реЙрдЧ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ Gunicorn (19.7.1) рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдерд╛ред

рдореИрдВрдиреЗ Gunicorn рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рдлрд╝реНрд▓реИрдЧ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдФрд░ рдореИрдВ Kubernetes GKE рдХреЗ рд▓рд┐рдП BackendConfig рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ GKE рд▓реЛрдбрдмреИрд▓реЗрдВрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдПрдирдЬреАрдЖрдИрдПрдирдПрдХреНрд╕ рдЗрдирдЧреНрд░реЗрдб рдХреЗ рд╕рд╛рде рднреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред рдЧрдирд┐рдХреЛрд░реНрди рдХрдорд╛рдВрдб:

gunicorn --bind="0.0.0.0:5000" --workers=1 --timeout=1200 --keep-alive=1200 main:app

рдЬрдм рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рдордиреЗ рдХреБрдЫ рднреА рдмрд┐рдирд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ Gunicorn рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЦреЛ рдЧрдИ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХреЛрдИ рднрд╛рдЧреНрдп рдорд┐рд▓рд╛ рд╣реИ? рдпрд╛ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛?

рдбреЙрдХрд░ рд╕рдВрд╕реНрдХрд░рдг 19.03.8, рдирд┐рд░реНрдорд╛рдг afacb8b7f0

рдкрд╛рдпрдерди 3.8.2 (рдбрд┐рдлрд╝реЙрд▓реНрдЯ, 26 рдлрд░рд╡рд░реА 2020, 15:09:34)
[рдЬреАрд╕реАрд╕реА рео.рей.реж] рд▓рд┐рдирдХреНрд╕ рдкрд░

import multiprocessing
import os

bind = '0.0.0.0:8889'
max_requests = 100000
timeout = 60
graceful_timeout = 60
if os.environ.get('WEB_WORKERS') is None:
    _cpu_count = multiprocessing.cpu_count()
    workers = 2 * _cpu_count + 1
else:
    workers = int(os.environ['WEB_WORKERS'])
limit_request_line = 4094 * 4  # 4x then default val
errorlog = '/var/log/krapi/gunicorn.error.log'
accesslog = '/var/log/krapi/gunicorn.access.log'
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 133, in handle
    req = next(parser)
  File "/usr/local/lib/python3.8/site-packages/gunicorn/http/parser.py", line 41, in __next__
    self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count)
  File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 186, in __init__
    super().__init__(cfg, unreader)
  File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 53, in __init__
    unused = self.parse(self.unreader)
  File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 235, in parse
    self.headers = self.parse_headers(data[:idx])
  File "/usr/local/lib/python3.8/site-packages/gunicorn/http/message.py", line 73, in parse_headers
    remote_addr = self.unreader.sock.getpeername()
OSError: [Errno 107] Transport endpoint is not connected

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА HEAD рдЕрдиреБрд░реЛрдз рдЗрд╕реЗ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЧрдирд┐рдХреЛрд░реНрди рдХреЗ рдкреАрдЫреЗ django рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, (рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдХреА рд╣реИред

рд╡рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ #2277 . рддрдХ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Ansible рдХрд╛ Wait_for рдореЙрдбреНрдпреВрд▓ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╣реИред

рдореИрдВ рдПрдХ рдЧрдирд┐рдХреЛрд░реНрди + рдлреНрд▓рд╛рд╕реНрдХ рд╕рд░реНрд╡рд░ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди 3.6.12, рдЧрдирд┐рдХреЛрд░реНрди 19.9.0, рдлреНрд▓рд╛рд╕реНрдХ 1.4.1) рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Wait_for рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реЗрд╡рд╛ рдЪрд╛рд▓реВ рд╣реИ рдФрд░ рдЪрд▓ рд░рд╣реА рд╣реИред
рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╕рдВрднрд╡рдд: рд╕реЗрд╡рд╛ рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХрдиреЗрдХреНрд╢рди рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЧрдирд┐рдХреЛрд░реНрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ) рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЧрдирд┐рдХреЛрд░реНрди рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЙрдард╛рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рднреА рдРрд╕рд╛ рд╣реА рдХрд░рддреА рд╣реИред

рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА .. рд╣рдореНрдо
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдореЗрдВ рднрд╛рд░реА рдЯреНрд░реИрдлрд╝рд┐рдХ рдорд┐рд▓рд╛ рд╣реИ.. 100-1000 рдЯреАрдкреАрдПрд╕, рдФрд░ рдХреБрдЫ рдЕрдиреБрд░реЛрдз рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдП

рдкрд╛рдпрдерди 3.8
рдлреНрд▓рд╛рд╕реНрдХ
рдЧрдирд┐рдХреЛрд░реНрди

рдиреАрдЪреЗ рдбреЛрдХрд░ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде ..

FROM python:3-slim

RUN apt-get update && apt-get -y install gcc

ENV PYTHONUNBUFFERED True

COPY . /app

WORKDIR /app/src

RUN pip install Flask requests gunicorn
RUN pip install -U flask-cors
RUN pip install requests
RUN pip install DateTime
RUN pip install timedelta

RUN chmod 444 app.py

CMD exec gunicorn -b :443 --workers 5 --threads 8 --timeout 10 app:app --reload

рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди?

рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИрдВ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреАрдЖрд░ рд╣реИрдВ, рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдордп рд╕реАрдорд╛ рд╣реИ?
Screenshot 2020-12-14 at 12 45 42

рдирдорд╕реНрддреЗ @tilgovi
рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдордп-рд╕реАрдорд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Gunicorn рдкреИрдХреЗрдЬ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ...
image

рдореИрдВ рд╢рд╛рдпрдж рдЖрдЬ рд░рд┐рд▓реАрдЬ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЗрд╕ рдПрдиреЛрдЯрдХреЙрди рдореБрджреНрджреЗ рдХреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдВред @tilgovi рдХреЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдлрд┐рдХреНрд╕ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

?

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдорджрдж рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдкреИрдЪ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛?

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдХреНрдпрд╛ рдкрд┐рдк рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрджреНрдпрддрди рдЬрд╛рдирдХрд╛рд░реА рд╣реИ?

@yehjames рдорд╛рд╕реНрдЯрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ? рдЖрдЬ рд░рд┐рд▓реАрдЬ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдорд╛рд╕реНрдЯрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

@benoitc рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдЙрддреНрдкрд╛рджрди рдореЗрдВ 20.0.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП @asantoni (рдПрдХ рдмрдВрджрд░-рдкреИрдЪ рдХреЗ рд░реВрдк рдореЗрдВ) рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди Veracode рд╕реНрдерд┐рд░ рдХреЛрдб рд╕реНрдХреИрди рдкреИрдЪ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрднреА рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рд╢реБрдХреНрд░рд┐рдпрд╛!

рд╣рдо рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдПрдХ рд░рд┐рд▓реАрдЬ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рд╣рдо рдПрдХ рджрд┐рди рдХрд╛ рд╡рд╛рджрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдмрдЪрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдкреНрд░рдмрдВрдзрди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдХреГрдкрдпрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯрд╣рдм рдХреА "рд╡реЙрдЪ" рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдзрд┐рд╕реВрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд░рд┐рд▓реАрдЬ рджреЗрдЦреЗрдВред

рдирдорд╕реНрддреЗред рдореЗрд░реЗ рдкрд╛рд╕ HAProxy + Gunicorn + Django рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдореЗрд░реЗ HAProxy рдмреИрдХрдПрдВрдб рдЪреЗрдХреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЕрдкрдиреЗ рд▓рдЧрднрдЧ рд╕рднреА рд╕рд░реНрд╡рд░ рдЦреЛ рджреЗрддрд╛ рд╣реИ рдФрд░ Gunicorn рд▓реЙрдЧ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИрдВ:

[2021-07-23 18:16:27 -0500] [13] [ERROR] Socket error processing request. Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/gunicorn/workers/sync.py", line 133, in handle req = next(parser) File "/usr/local/lib/python3.9/site-packages/gunicorn/http/parser.py", line 41, in __next__ self.mesg = self.mesg_class(self.cfg, self.unreader, self.req_count) File "/usr/local/lib/python3.9/site-packages/gunicorn/http/message.py", line 186, in __init__ super().__init__(cfg, unreader) File "/usr/local/lib/python3.9/site-packages/gunicorn/http/message.py", line 53, in __init__ unused = self.parse(self.unreader) File "/usr/local/lib/python3.9/site-packages/gunicorn/http/message.py", line 235, in parse self.headers = self.parse_headers(data[:idx]) File "/usr/local/lib/python3.9/site-packages/gunicorn/http/message.py", line 73, in parse_headers remote_addr = self.unreader.sock.getpeername() OSError: [Errno 107] Transport endpoint is not connected

рдореИрдВ gunicorn == 20.0.4, Django == 3.1.5, рд╣рд╛-рдкреНрд░реЙрдХреНрд╕реА рд╕рдВрд╕реНрдХрд░рдг 2.2.11-1ppa1 ~ рдмрд╛рдпреЛрдирд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╕реБрд░рд╛рдЧ?

рдпрд╣ рдЯреАрд╕реАрдкреА рдореЛрдб рдкрд░ рд╣реИ, рдПрд╕рдПрд╕рдПрд▓ рдирд╣реАрдВ, рдЯрд┐рдбреНрдбреА рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рдкрд░ред

рдХреЛрдИ рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ

@krishnamanchikalapudi @ricarhincapie Gunicorn рдХреА рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ :)

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

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

agilezebra picture agilezebra  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

zenglingyu picture zenglingyu  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mw44118 picture mw44118  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gr790 picture gr790  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thomasjungblut picture thomasjungblut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ