Gunicorn: OSError: [Errno 11] рд╣реЗрд░реЛрдХреВ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 19.8.1 (рдФрд░ 19.8.0) рдкрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрди

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

рдореИрдВ Heroku рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреБрдкреНрдкреА рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ:

web: gunicorn --worker-class eventlet -w 1 app:app --log-file=-

рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 2.7.15 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдпреБрдЧреЛрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣реЗрд░реЛрдХреВ v. 19.8.1 рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдВ (рдХрд╣реАрдВ рднреА рдХреБрдЫ kb рд╕реЗ рдХреБрдЫ mb рдЖрдХрд╛рд░ рдореЗрдВ) рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдВрдЧреА; рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реА рдЫрд╡рд┐рдпреЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╕рд╛рдЗрдЯ рд╣реИ (рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реАрдЯ) рдФрд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрдпрди рд╣рд░ рдмрд╛рд░ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИ (рдпрджрд┐ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ) :

2018-05-29T09:24:36.216949+00:00 app[web.1]: [2018-05-29 09:24:36 +0000] [10] [ERROR] Socket error processing request. 2018-05-29T09:24:36.216969+00:00 app[web.1]: Traceback (most recent call last): 2018-05-29T09:24:36.216971+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/async.py", line 66, in handle 2018-05-29T09:24:36.216972+00:00 app[web.1]: six.reraise(*sys.exc_info()) 2018-05-29T09:24:36.216974+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/async.py", line 56, in handle 2018-05-29T09:24:36.216976+00:00 app[web.1]: self.handle_request(listener_name, req, client, addr) 2018-05-29T09:24:36.216978+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/async.py", line 129, in handle_request 2018-05-29T09:24:36.216980+00:00 app[web.1]: six.reraise(*sys.exc_info()) 2018-05-29T09:24:36.216981+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/async.py", line 112, in handle_request 2018-05-29T09:24:36.216983+00:00 app[web.1]: resp.write_file(respiter) 2018-05-29T09:24:36.216985+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 403, in write_file 2018-05-29T09:24:36.216987+00:00 app[web.1]: if not self.sendfile(respiter): 2018-05-29T09:24:36.216989+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 393, in sendfile 2018-05-29T09:24:36.216990+00:00 app[web.1]: sent += sendfile(sockno, fileno, offset + sent, count) 2018-05-29T09:24:36.216992+00:00 app[web.1]: File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/http/_sendfile.py", line 66, in sendfile 2018-05-29T09:24:36.216994+00:00 app[web.1]: raise OSError(e, os.strerror(e)) 2018-05-29T09:24:36.216996+00:00 app[web.1]: OSError: [Errno 11] Resource temporarily unavailable

рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдпреЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВред txt:

Flask==0.12.2 gunicorn==19.8.1 pymongo==3.6.1 flask_socketio==2.9.6 flask_cors==3.0.3 eventlet==0.22.1 gevent==1.2.2

рдЧрдирд┐рдХреЛрд░реНрди рдХреЛ 19.7.1 рдореЗрдВ рдмрджрд▓рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИ; рдпрд╣ 19.8.0 рдХреЗ рд╕рд╛рде рдмрдиреА рд░рд╣рддреА рд╣реИред
2012 рд╕реЗ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреЛ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ рд╡рд╣ рдмрд╣реБрдд рддрддреНрдХрд╛рд▓ рд╣реИред 19.7.1 рдкрд░ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрднреА рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд░рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реЗрд░реЛрдХреВ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ; рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рдорд╣реАрдиреЗ рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрдм рдмрджрд▓реЗ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХреАред

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

рдореИрдВ рдЖрдЬ, рдкреВрд░реЗ рджрд┐рди рдЗрд╕реА рдореБрджреНрджреЗ рд╕реЗ рд▓рдбрд╝рддрд╛ рд░рд╣рд╛ред рдФрд░ рдореИрдВ _рдерд┐рдВрдХ_ рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ред рдореИрдВ nginx, рдХреБрдкреНрдкреА, gunicorn w/рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ, рдФрд░ docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдореЗрд░рд╛ (рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ) pip freeze рдЖрдЙрдЯрдкреБрдЯ:

eventlet==0.23.0
Flask==1.0.2
greenlet==0.4.14
gunicorn==19.9.0

рдореЗрд░рд╛ рдЧрдирд┐рдХреЛрд░реНрди рдХрдорд╛рдВрдб:
gunicorn -b 0.0.0.0:8000 --workers 1 --worker-class eventlet --log-level=DEBUG myapp.wsgi:app

рдкрд╣рд▓рд╛ рд▓рдХреНрд╖рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ ERR_CONTENT_LENGTH_MISMATCH рдлреЗрдВрдХрдиреЗ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдереЗред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдЗрд╕рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмрдбрд╝реЗ рд╕реНрдерд┐рд░ рдЬреЗрдПрд╕ libs рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдереЗред

рджреВрд╕рд░рд╛ рд▓рдХреНрд╖рдг nginx рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ error.log рдореЗрдВ рд▓реЙрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛: upstream prematurely closed connection while reading upstream

рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдПрдХ рдЧрдирд┐рдХреЛрд░реНрди рд▓реЙрдЧ рдЖрдЗрдЯрдо рдкрд░ рдЦреЛрдЬрд╛:

Socket error processing request. - [in /usr/local/lib/python2.7/dist-packages/gunicorn/glogging.py:277]
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 66, in handle
    six.reraise(*sys.exc_info())
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 56, in handle
    self.handle_request(listener_name, req, client, addr)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 129, in handle_request
    six.reraise(*sys.exc_info())
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 112, in handle_request
    resp.write_file(respiter)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/http/wsgi.py", line 403, in write_file
    if not self.sendfile(respiter):
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/http/wsgi.py", line 393, in sendfile
    sent += sendfile(sockno, fileno, offset + sent, count)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/http/_sendfile.py", line 66, in sendfile
    raise OSError(e, os.strerror(e))
OSError: [Errno 11] Resource temporarily unavailable

рдореЗрд░рд╛ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди --no-sendfile рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЧрдирд┐рдХреЛрд░реНрди рд╢реБрд░реВ рдХрд░рдирд╛ рдерд╛, рдФрд░ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЧрдИред рдХреНрдпреЛрдВ? рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ... рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐, рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдЕрдкрдиреЗ nginx.conf рдХреЛ рдпрд╣рд╛рдВ рдкрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХреА: http://docs.gunicorn.org/en/stable/deploy.html

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

рдореИрдВ рдЖрдЬ, рдкреВрд░реЗ рджрд┐рди рдЗрд╕реА рдореБрджреНрджреЗ рд╕реЗ рд▓рдбрд╝рддрд╛ рд░рд╣рд╛ред рдФрд░ рдореИрдВ _рдерд┐рдВрдХ_ рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд▓рд┐рдпрд╛ред рдореИрдВ nginx, рдХреБрдкреНрдкреА, gunicorn w/рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ, рдФрд░ docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдореЗрд░рд╛ (рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ) pip freeze рдЖрдЙрдЯрдкреБрдЯ:

eventlet==0.23.0
Flask==1.0.2
greenlet==0.4.14
gunicorn==19.9.0

рдореЗрд░рд╛ рдЧрдирд┐рдХреЛрд░реНрди рдХрдорд╛рдВрдб:
gunicorn -b 0.0.0.0:8000 --workers 1 --worker-class eventlet --log-level=DEBUG myapp.wsgi:app

рдкрд╣рд▓рд╛ рд▓рдХреНрд╖рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ ERR_CONTENT_LENGTH_MISMATCH рдлреЗрдВрдХрдиреЗ рд╡рд╛рд▓реЗ рдмрдбрд╝реЗ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдереЗред рдЬрд╛рд╣рд┐рд░ рд╣реИ рдЗрд╕рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдмрдбрд╝реЗ рд╕реНрдерд┐рд░ рдЬреЗрдПрд╕ libs рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдереЗред

рджреВрд╕рд░рд╛ рд▓рдХреНрд╖рдг nginx рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ error.log рдореЗрдВ рд▓реЙрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛: upstream prematurely closed connection while reading upstream

рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдПрдХ рдЧрдирд┐рдХреЛрд░реНрди рд▓реЙрдЧ рдЖрдЗрдЯрдо рдкрд░ рдЦреЛрдЬрд╛:

Socket error processing request. - [in /usr/local/lib/python2.7/dist-packages/gunicorn/glogging.py:277]
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 66, in handle
    six.reraise(*sys.exc_info())
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 56, in handle
    self.handle_request(listener_name, req, client, addr)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 129, in handle_request
    six.reraise(*sys.exc_info())
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base_async.py", line 112, in handle_request
    resp.write_file(respiter)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/http/wsgi.py", line 403, in write_file
    if not self.sendfile(respiter):
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/http/wsgi.py", line 393, in sendfile
    sent += sendfile(sockno, fileno, offset + sent, count)
  File "/usr/local/lib/python2.7/dist-packages/gunicorn/http/_sendfile.py", line 66, in sendfile
    raise OSError(e, os.strerror(e))
OSError: [Errno 11] Resource temporarily unavailable

рдореЗрд░рд╛ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди --no-sendfile рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдЧрдирд┐рдХреЛрд░реНрди рд╢реБрд░реВ рдХрд░рдирд╛ рдерд╛, рдФрд░ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЧрдИред рдХреНрдпреЛрдВ? рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ... рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐, рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдЕрдкрдиреЗ nginx.conf рдХреЛ рдпрд╣рд╛рдВ рдкрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХреА: http://docs.gunicorn.org/en/stable/deploy.html

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рднреА рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВ, 19.7.0 рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рддреБрд░рдВрдд рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рд▓рдВрдмреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ?

рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди? рдореИрдВ 19.9.0 . рдореЗрдВ рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЕрдЪрд╛рдирдХ рд╕реЗ рдРрд╕рд╛ рд╣реЛрдиреЗ рд▓рдЧрд╛ред

@tilgovi рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдПред рдПрдХрд╛рдПрдХ рдпрд╣ рдореБрджреНрджрд╛ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд▓рдЧрд╛

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ рд╡рд░реНрдХрд░ рдХреА рд╡рдЬрд╣ рд╕реЗ рдереАред рдореИрдВрдиреЗ рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЕрдм рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реВрдВред рдФрд░ @SaintSimmo рдХрд╛ рд╕реБрдЭрд╛рд╡ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рдорд╕реНрдпрд╛ рддреБрд░рдВрдд рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдореИрдВ рдлреНрд▓рд╛рд╕реНрдХ рдФрд░ рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдХрд╛рдо рдлреНрд▓рд╛рд╕реНрдХ рд╕реЗ send_from_directory рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рдореЗрдВ рдЧрдирд┐рдХреЛрд░реНрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЧрдирд┐рдХреЛрд░реНрди --рд╡рд░реНрдХрд░-рдХреНрд▓рд╛рд╕ рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ-рдбрдмреНрд▓реНрдпреВ 1-рдмреА 0.0.0.0:4000 рдЕрдкрд▓реЛрдб: рдРрдк
рдЬреЛ рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛ред
рдпрджрд┐ рдХрдорд╛рдВрдб рдореЗрдВ "--no-sendfile" рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдбрд╛рдЙрдирд▓реЛрдбрд┐рдВрдЧ рдХрд╛рд░реНрдп "sendfile" рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ "sendfile" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЧрдирд┐рдХреЛрд░реНрди (рд╕рдВрд╕реНрдХрд░рдг 19.9.0) рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛

19.9.0 рдХреЛ, @SaintSimmo рдХреА --no-sendfile рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдиреЗ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред

рд╣рд╛рдВ, рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдФрд░ рдЗрд╡реЗрдВрдЯрд▓реЗрдЯ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЬрдм рдореИрдВ рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ (gunicorn -w 1 -k eventlet -b 127.0.0.1:5000 wsgi:app) рдореБрдЭреЗ рдиреАрдЪреЗ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддреЗ рд╣реИрдВ рдФрд░ рдореЗрд░реА рдЫрд╡рд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд░ рдХрд╛рдЯ рджреА рдЬрд╛рддреА рд╣реИред
[рддреНрд░реБрдЯрд┐] рд╕реЙрдХреЗрдЯ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдзред
...
BlockingIOError: [Errno 11] рд╕рдВрд╕рд╛рдзрди рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╣рдЯрд╛рдХрд░, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЧрдирд┐рдХреЛрд░реНрди -w 1-b 127.0.0.1:5000 wsgi:app

@jacebrowning рдФрд░ @SaintSimmo , рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ --no-sendfile рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ gunicorn рдХрдорд╛рдВрдб рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рд╣реИред

рдпрд╣ рдЖрдорддреМрд░ рдкрд░ nproc рдХреЗ рдмрд╣реБрдд рдХрдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЖрдк ' /etc/security/limits.conf ' рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЙрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП nproc рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИрдВ? рдпрджрд┐ рдЖрдк Python 3.4 рдпрд╛ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ Gunicorn рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

рдореБрдЭреЗ --worker-class рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред рдореИрдВрдиреЗ рдЧрдирд┐рдХреЛрд░реНрди рдХреЛ 20.0.4 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред

рд╡рд░реНрдХрд░ рдХреНрд▓рд╛рд╕ рдХреЛ рдЬреЗрд╡реЗрдВрдЯ рдореЗрдВ рдмрджрд▓рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рд░рдЧрд░ рд░рд╣рд╛ред --worker-class gevent

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

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

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

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

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

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

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