<p>рдЧреБрдирд┐рдХреЙрд░реНрди 20.0.0: --рдкреЗрд╕реНрдЯ [рд╕рд░реНрд╡рд░: рдореБрдЦреНрдп] тАЛтАЛрдХреЗ рддрд╣рдд рддрд░реНрдХреЛрдВ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реИ</p>

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

рд╣реИрд▓реЛ рдЧрдирд┐рдХреЛрд░реНрди рдЕрдиреБрд░рдХреНрд╖рдХ,

рд╡рд╛рддрд╛рд╡рд░рдг:

  • python 3.6.1
  • pyramid==1.9.2

12 рд╕рд┐рддрдВрдмрд░ 2019 рдХреЛ, рдореИрдВрдиреЗ рдЗрд╕ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлрд╝реНрд▓реЛ рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░ waitress рдХреЛ gunicorn $ рдХреЗ рд╕рд╛рде рдмрджрд▓рдХрд░, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдЖрдВрддрд░рд┐рдХ pyramid рд╕рд░реНрд╡рд░ рдХреЛ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдЙрд╕ рдкрд░ рджреЛрдмрд╛рд░рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА:

https://stackoverflow.com/a/26872261/10491481

рдЬрд┐рд╕ рд╕рдордп рдЖрдВрддрд░рд┐рдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕ рд╕рдордп gunicorn рдХреА рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ 19.9.0 рдереАред

рдореБрдЭреЗ рдЖрдЬ рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЙрддреНрдкрд╛рджрди CentOS 6.5 рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рдПрдХ рдирдП git clone рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдЬрд┐рд╕ рд╕рдордп рдореИрдВрдиреЗ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рдерд╛, рдореИрдВрдиреЗ gunicorn рдореЗрдВ setup.py рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЖрдЬ pip install рдЪрд▓рд╛рдпрд╛, рддреЛ рдпрд╣ (рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ) gunicorn==20.0.0 рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реЛ рдЧрдпрд╛ред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ development.ini рдореЗрдВ [server:main] $ рдХреЗ рддрд╣рдд рдореЗрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдЯрд╛рд░реНрдЯ рдЕрдк рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд░рд╣реА рдереАрдВред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ development.ini рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде:

[server:main]
use = egg:gunicorn#main
host = 0.0.0.0
port = 9090
workers = 1
worker_class = gevent
certfile=/etc/ssl/certs/current/webserver.cer
keyfile=/etc/ssl/certs/current/private.key.u
ca_certs=/etc/ssl/certs/current/intermediate.cert

gunicorn 19.9.0 :

$ gunicorn --version
gunicorn (version 19.9.0)
$ gunicorn --paste development.ini 
[2019-11-12 12:42:59 -0800] [16733] [INFO] Starting gunicorn 19.9.0
[2019-11-12 12:42:59 -0800] [16733] [INFO] Listening at: https://0.0.0.0:9090 (16733)
[2019-11-12 12:42:59 -0800] [16733] [INFO] Using worker: gevent
[2019-11-12 12:42:59 -0800] [16744] [INFO] Booting worker with pid: 16744

gunicorn 20.0.0

$ gunicorn --version
gunicorn (version 20.0.0)
$ gunicorn --paste development.ini 
[2019-11-12 12:45:28 -0800] [17295] [INFO] Starting gunicorn 20.0.0
[2019-11-12 12:45:28 -0800] [17295] [INFO] Listening at: http://127.0.0.1:8000 (17295)
[2019-11-12 12:45:28 -0800] [17295] [INFO] Using worker: sync
[2019-11-12 12:45:28 -0800] [17300] [INFO] Booting worker with pid: 17300

рджреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдмреАрдЪ рдзреНрдпрд╛рди рджреЗрдВ:

  • рдПрд╕рдПрд╕рдПрд▓ рдХреЗ рд╕рд╛рде рдЕрдм рддреИрдирд╛рддреА рдирд╣реАрдВ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ gunicorn 20.0.0 рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ http рдХреИрд╕реЗ рд╣реИ)
  • host рддрд░реНрдХ рдЕрдм рд╕рд╣реА рдирд╣реАрдВ рд╣реИ (0.0.0.0 рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ 127.0.0.1 0.0.0.0 рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛)
  • port рддрд░реНрдХ рдЕрдм рд╕рд╣реА рдирд╣реАрдВ рд╣реИ (9090 рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ 8000 9090 рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛)

рдореИрдВрдиреЗ gunicorn 20.0.0 рдХреЗ рд▓рд┐рдП рдЪреИрдВрдЬ рдХреЛ рджреЗрдЦрд╛:

http://docs.gunicorn.org/hi/stable/news.html

рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ --paste рддрд░реНрдХ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдмреВрдЭрдХрд░ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ gunicorn 20.0.0 рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдХреМрди рд╕реЗ рддрд░реНрдХ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рд╕рд░реНрд╡рд░ рдЗрд░рд╛рджреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛:

$ gunicorn \
  --paste development.ini \
  -b 0.0.0.0:9090
  --workers 1 \
  --certfile /etc/ssl/certs/current/webserver.cer \
  --keyfile /etc/ssl/certs/current/private.key.u
[2019-11-12 12:54:08 -0800] [18979] [INFO] Starting gunicorn 20.0.0
[2019-11-12 12:54:08 -0800] [18979] [INFO] Listening at: https://0.0.0.0:9090 (18979)
[2019-11-12 12:54:08 -0800] [18979] [INFO] Using worker: sync
[2019-11-12 12:54:08 -0800] [18985] [INFO] Booting worker with pid: 18985

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдХреЛрдИ рдорджрдж рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдзрдиреНрдпрд╡рд╛рдж,
рдХреЛрд░реА

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

рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ рдФрд░ рд╕реНрд╡-рдЕрд╕рд╛рдЗрди рдХрд░реВрдВрдЧрд╛ред рдЬрдм рдореИрдВ рдпрд╣рд╛рдВ рдЪреИрдВрдЬ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдкрд╛рдареНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред

рдлрд┐рд░ рд╕реЗ, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪреЗрдВрдЬрд▓реЙрдЧ рдореЗрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдорд╛рдлрд╝реАред

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

рдореИрдВ рдХреНрд╖рдорд╛рдкреНрд░рд╛рд░реНрдереА рд╣реВрдВред рдЪреИрдВрдЬ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗрд╡рд▓ "рд╕рд░рд▓ рдкреЗрд╕реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг" рдХрд╣рддреА рд╣реИ, рдФрд░ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдЪрд╛рд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдереАред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдпрд╣рд╛рдВ рд╣реИ: https://github.com/benoitc/gunicorn/pull/1957

рдкрд╣рд▓реЗ, рд╣рдордиреЗ use = egg:gunicorn#main рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкреЗрд╕реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди-рд╕рдВрдЧрдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ Gunicorn рдХреА рднреВрдорд┐рдХрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рд╣реИред

.ini рдлрд╝рд╛рдЗрд▓ рдХреА рдЗрд╕ рд╢реИрд▓реА рдХреЗ рд╕рд╛рде Gunicorn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк gunicorn CLI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рддрд░реНрдХреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Gunicorn рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ CLI рдлрд╝реНрд▓реИрдЧреНрд╕ рдпрд╛ Gunicorn рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЙрдбреНрдпреВрд▓ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ gunicorn.conf.py ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред Gunicorn рдмрд╛рдЗрдВрдб рд╕реЙрдХреЗрдЯ рд╣реИ, рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, PID рдлрд╛рдЗрд▓реЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдХреЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Gunicorn рдЖрдкрдХреЗ .ini рдореЗрдВ рдПрдХ app рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдкреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдЬреИрд╕реЗ pserve рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдкреБрдирдГ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдкреАрдЖрдИрдбреА тАЛтАЛтАЛтАЛрдлрд╛рдЗрд▓ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдкрдХреА .ini рдлрд╝рд╛рдЗрд▓ рдХреЗ server рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреЗрд╕реНрдЯ рд╕рдВрдЧрдд рд╣реИред Gunicorn рдЕрдм рдРрд╕рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ рдирд╣реАрдВ рд░рд╣рд╛ред

рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред

рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pserve рдХреЗ рдмрдЬрд╛рдп gunicorn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред Gunicorn рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рд░реНрд╡рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрдм рдЖрдкрдХреЗ server рдмреНрд▓реЙрдХ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред

рдкрд┐рдЫрд▓рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЙрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдереА рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ .ini рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ рд╡рд░реНрдЬрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ server рдмреНрд▓реЙрдХ (рдЕрд▓рдЧ-рдЕрд▓рдЧ app рдмреНрд▓реЙрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рднреА рдерд╛ред рдирддреАрдЬрддрди, рдЗрди рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп Gunicorn рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЗрд╕реНрдЯ _server_ рд░рдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Gunicorn CLI рдЕрдм рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрд╕реНрдЯ рдбрд┐рдкреНрд▓реЙрдп .ini рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди server рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рд╕рдорд░реНрдкрд┐рдд рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pserve рдХреЗ рдмрдЬрд╛рдп gunicorn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рддреЗрдЬрд╝ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @tilgovi!

рдЖрдкрдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреЗ рдмрд╛рдж:

$ pserve development.ini
# ...
Starting server in PID 40148.
[2019-11-12 14:26:30 -0800] [40148] [INFO] Starting gunicorn 20.0.0
[2019-11-12 14:26:30 -0800] [40148] [INFO] Listening at: https://0.0.0.0:9090 (40148)
[2019-11-12 14:26:30 -0800] [40148] [INFO] Using worker: gevent
[2019-11-12 14:26:30 -0800] [40263] [INFO] Booting worker with pid: 40263

рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЖрдВрддрд░рд┐рдХ рдкреАрдЖрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдореИрдВрдиреЗ pserve рдХрдорд╛рдВрдб рдХреЛ gunicorn рдореЗрдВ рдмрджрд▓рдирд╛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛рд╡рдзрд╛рди рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╣рдорд╛рд░реЗ рдореВрд▓ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реВрдВ рдЖрдВрддрд░рд┐рдХ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ред

рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ =)

рдзрдиреНрдпрд╡рд╛рдж,
рдХреЛрд░реА

рдПрдХ рдЕрдВрддрд┐рдо рдиреЛрдЯ, рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╣ рд╕рднреА рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝ рджрд┐рдП рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ рдХрд┐ gunicorn --paste production.ini рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ Gunicorn рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛ _рднрд▓реЗ рд╣реА server рдмреНрд▓реЙрдХ egg:gunicorn#main _ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реЛ!

рдЪреВрдВрдХрд┐ Gunicorn рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рд░реНрд╡рд░ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕ рдореИрдиреЗрдЬрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП Gunicorn рдХрд╛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкреЗрд╕реНрдЯ-рд╕рдВрдЧрдд рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп CLI рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, Gunicorn рдПрдХ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ рдкреЗрд╕реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ _is a_ рдкреЗрд╕реНрдЯ-рд╕рдВрдЧрдд рд╕рд░реНрд╡рд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ _not_ рдПрдХ рдкреЗрд╕реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирд░ CLI рд╣реИ!

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд┐рд░рд╛рдорд┐рдб рдХреБрдХрдмреБрдХ рдкрд░ рдПрдХ рдореБрджреНрджрд╛ рдЦреЛрд▓рд╛: https://github.com/Pylons/pyramid_cookbook/issues/222

рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрдирд┐рдХреЛрд░реНрди рдореЗрдВ рд╣реА рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдпрд╣ рдпрд╣рд╛рдБ рд╣реИ: http://docs.gunicorn.org/en/stable/run.html#paste -рддреИрдирд╛рддреА

@tilgovi рдмрд╕ рдПрдХ рд╕рд┐рд░ рдКрдкрд░ рдпрд╣ рдореЗрд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдерд╛ред рд╢рд╛рдпрдж рдЪреЗрдВрдЬрд▓реЙрдЧ рдХреЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЬрд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реИ?

рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ рдФрд░ рд╕реНрд╡-рдЕрд╕рд╛рдЗрди рдХрд░реВрдВрдЧрд╛ред рдЬрдм рдореИрдВ рдпрд╣рд╛рдВ рдЪреИрдВрдЬ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдкрд╛рдареНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ред

рдлрд┐рд░ рд╕реЗ, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪреЗрдВрдЬрд▓реЙрдЧ рдореЗрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдорд╛рдлрд╝реАред

@рддрд┐рд▓рдЧреЛрд╡рд┐ рдмрдВрдк

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

рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдореЗрд░реА рдЯреАрдо рдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП, gunicorn 20.0.0 рдлрд╝рдВрдХреНрд╢рди pyramid_ldap3.get_ldap_connector рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

gunicorn 20.0.0 :

рд╢реБрд░реБрдЖрдд рдореЗрдВ:

$ pip list | grep gunicorn
gunicorn             20.0.0
$ pserve bioapps/development.ini
[2019-11-20 15:55:30 -0800] [9902] [INFO] Starting gunicorn 20.0.0
[2019-11-20 15:55:30 -0800] [9902] [INFO] Listening at: https://0.0.0.0:10999 (9902)
[2019-11-20 15:55:30 -0800] [9902] [INFO] Using worker: gevent
[2019-11-20 15:55:30 -0800] [10034] [INFO] Booting worker with pid: 10034
/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/gunicorn/workers/ggevent.py:53: MonkeyPatchWarning: Monkey-patching ssl after ssl has already been imported may lead to errors, including RecursionError on Python 3.6. It may also silently lead to incorrect behaviour on Python 3.7. Please monkey-patch earlier. See https://github.com/gevent/gevent/issues/1016. Modules that had direct imports (NOT patched): ['urllib3.util.ssl_ (/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/urllib3/util/ssl_.py)', 'urllib3.util (/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/urllib3/util/__init__.py)'].
  monkey.patch_all()

рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:

[2019-11-20 15:57:54,189] INFO  [access:342][DummyThread-1] 10.9.202.54 - - "POST https://bioappsdev02.bcgsc.ca:10999/session HTTP/1.1" {'username': 'colim', 'password': ''}
[2019-11-20 15:57:57,276] ERROR [exc_logger:114][DummyThread-1] 'https://bioappsdev02.bcgsc.ca:10999/session'
Traceback (most recent call last):
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/tweens.py", line 39, in excview_tween
    response = handler(request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/router.py", line 156, in handle_request
    view_name
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/view.py", line 642, in _call_view
    response = view_callable(context, request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/config/views.py", line 181, in __call__
    return view(context, request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/viewderivers.py", line 390, in attr_view
    return view(context, request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/viewderivers.py", line 368, in predicate_wrapper
    return view(context, request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/viewderivers.py", line 439, in rendered_view
    result = view(context, request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid/viewderivers.py", line 148, in _requestonly_view
    response = view(request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/cornice/service.py", line 493, in wrapper
    response = view_(request)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/bioapps/api/endpoints/session.py", line 139, in session_post
    username, request.validated['password'], request,
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/bioapps/api/endpoints/session.py", line 27, in get_ldap_groups
    auth = connector.authenticate(username, password)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid_ldap3/__init__.py", line 208, in authenticate
    password=escape_for_search(password))
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid_ldap3/__init__.py", line 82, in execute
    with manager.connection() as conn:
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/pyramid_ldap3/__init__.py", line 165, in connection
    auto_bind=True, lazy=False, read_only=True)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/ldap3/core/connection.py", line 326, in __init__
    self.do_auto_bind()
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/ldap3/core/connection.py", line 343, in do_auto_bind
    self.bind(read_server_info=True)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/ldap3/core/connection.py", line 585, in bind
    _, result = self.get_response(response)
  File "/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/ldap3/strategy/base.py", line 370, in get_response
    raise LDAPResponseTimeoutError('no response from server')
ldap3.core.exceptions.LDAPResponseTimeoutError: no response from server
[2019-11-20 15:57:57,298] INFO  [access:362][DummyThread-1] 10.9.202.54 - - "POST https://bioappsdev02.bcgsc.ca:10999/session HTTP/1.1" 500 206

gunicorn 19.9.0

рд╢реБрд░реБрдЖрдд рдореЗрдВ:

$ pip install gunicorn==19.9.0
Collecting gunicorn==19.9.0
  Using cached https://files.pythonhosted.org/packages/8c/da/b8dd8deb741bff556db53902d4706774c8e1e67265f69528c14c003644e6/gunicorn-19.9.0-py2.py3-none-any.whl
Installing collected packages: gunicorn
  Found existing installation: gunicorn 20.0.0
    Uninstalling gunicorn-20.0.0:
      Successfully uninstalled gunicorn-20.0.0
Successfully installed gunicorn-19.9.0
$ pip list | grep unicorn
gunicorn             19.9.0
$ gunicorn --paste bioapps/development.ini
[2019-11-20 16:03:45 -0800] [12015] [INFO] Starting gunicorn 19.9.0
[2019-11-20 16:03:45 -0800] [12015] [INFO] Listening at: https://0.0.0.0:10999 (12015)
[2019-11-20 16:03:45 -0800] [12015] [INFO] Using worker: gevent
[2019-11-20 16:03:45 -0800] [12018] [INFO] Booting worker with pid: 12018

рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж:

[2019-11-20 16:04:39,292] INFO  [access:342][DummyThread-1] 10.9.202.54 - - "POST https://bioappsdev02.bcgsc.ca:10999/session HTTP/1.1" {'username': 'colim', 'password': ''}
[2019-11-20 16:04:39,527] INFO  [access:362][DummyThread-1] 10.9.202.54 - - "POST https://bioappsdev02.bcgsc.ca:10999/session HTTP/1.1" 200 639

development.ini рдореЗрдВ gunicorn 20.0.0 рдФрд░ gunicorn 19.9.0 $ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо gunicorn 20.0.0 рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ:

$ pip list | grep unicorn
gunicorn             20.0.0
$ gunicorn --paste bioapps/development.ini -b 0.0.0.0:8999 --workers 1 --certfile /etc/ssl/certs/current/webserver.cer  --keyfile /etc/ssl/certs/current/private.key.u
[2019-11-20 16:14:27 -0800] [14783] [INFO] Starting gunicorn 20.0.0
[2019-11-20 16:14:27 -0800] [14783] [INFO] Listening at: https://0.0.0.0:8999 (14783)
[2019-11-20 16:14:27 -0800] [14783] [INFO] Using worker: sync
[2019-11-20 16:14:27 -0800] [14798] [INFO] Booting worker with pid: 14798
[2019-11-20 16:16:39,550] INFO  [access:342][MainThread] 10.9.202.54 - - "POST https://bioappsdev02.bcgsc.ca:8999/session HTTP/1.1" {'username': 'colim', 'password': ''}
[2019-11-20 16:16:39,768] INFO  [access:362][MainThread] 10.9.202.54 - - "POST https://bioappsdev02.bcgsc.ca:8999/session HTTP/1.1" 200 639

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдХреЛ gunicorn 20.0.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ $#$2 pserve #$ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдордп рд╣реИ рдЬрдм рд╣рдо рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЦрддреЗ рд╣реИрдВ:

/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/gunicorn/workers/ggevent.py:53: MonkeyPatchWarning: Monkey-patching ssl after ssl has already been imported may lead to errors, including RecursionError on Python 3.6. It may also silently lead to incorrect behaviour on Python 3.7. Please monkey-patch earlier. See https://github.com/gevent/gevent/issues/1016. Modules that had direct imports (NOT patched): ['urllib3.util.ssl_ (/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/urllib3/util/ssl_.py)', 'urllib3.util (/home/colim/Projects/bioapps/bioapps.api.ssl/centos7venv/lib/python3.6/site-packages/urllib3/util/__init__.py)'].
  monkey.patch_all()

@tilgovi рдЖрдк рдЪреИрдВрдЬ рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓реЗрдВрдЧреЗ?

@benoitc рдореИрдВ Gunicorn CLI рдореЗрдВ рдкреЗрд╕реНрдЯ рдбрд┐рдкреНрд▓реЙрдп рд╕рд░реНрд╡рд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореИрдВ рдЖрдЬ рдпрд╣ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдВрдЬрд▓реЙрдЧ рдХреЛ рд░реЗрдЯреНрд░реЛ-рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (20.0 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрднрд╛рдЧ рдмрдирд╛рдПрдВ)?

@CorreyL рджрд┐рд▓рдЪрд╕реНрдк! рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде gunicorn рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ gunicorn рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИред pserve рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрд▓рддреА рдирд╣реАрдВ рдХреА рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЗрдВрдЬрд▓реЙрдЧ рдХреЛ рд░реЗрдЯреНрд░реЛ-рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ (20.0 рд░рд┐рд▓реАрдЬ рдореЗрдВ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрднрд╛рдЧ рдмрдирд╛рдПрдВ)?

@tilgovi рд╣рд╛рдВ рдЬрд░реВрд░

@tilgovi рдХреНрдпрд╛ рдЖрдк рдЖрдЬ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрд╕реЗ 20.0.1 рдХреЗ рд▓рд┐рдП рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ :)

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

@tilgovi рдзрдиреНрдпрд╡рд╛рдж

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

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

рд╡реНрдпрд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдХреНрд╖рдорд╛рдпрд╛рдЪрдирд╛, @Deimosред рдореИрдВ рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдореЗрд░реА рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ --config рдХреЗ рд╕рд╛рде --paste рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рд░реЛрдбрдХреЛрдб) рд╕реНрдореГрддрд┐ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд╡рд┐рд╢реЗрд╖ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЧрдирд┐рдХреЛрд░реНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред

@marcinkuzminski рдпрд╣ рдЖрджрд░реНрд╢ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдмрд╕ --paste рдФрд░ --config рджреЛрдиреЛрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, Gunicorn рдкреЗрд╕реНрдЯ ini рдлрд╝рд╛рдЗрд▓ рдХреЗ "рд╕рд░реНрд╡рд░" рдЦрдВрдб рдХреЛ рдирд╣реАрдВ рдкрдврд╝реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ gunicorn рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред

рд╡рд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИред

рд╣рдо рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ gunicorn рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рддрд░реНрдХ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ .ini рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реМрдВрдк рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдг рдкрд┐рд░рд╛рдорд┐рдб рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЙрд╕реЗ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдирд┐рдХреЛрд░реНрди рдХреЛ рдлреЛрд░реНрдХ рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЖрд╕рд╛рди рд╣реИ, рдлрд┐рд░ рддрд░реНрдХ рдХреЛ рдмрджрд▓реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ gunicorn_conf.py рдкрд░ рд╕реМрдВрдкреЗрдВ :(

рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ --paste рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЧрдирд┐рдХреЛрд░реНрди рдХреЛ --paste рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрдврд╝реЗрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ gunicorn. рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдЬреИрд╕реЗ

рдмрдВрджреВрдХрдзрд╛рд░реА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ = 2
рдЧрдирд┐рдХреЛрд░.XXX = YYY

рдЖрдкрдХреЛ --config рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреЗрд╕реНрдЯ рдЖрдИрдПрдирдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП pserve рдХреЗ рдмрдЬрд╛рдп gunicorn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ: https://docs.gunicorn.org/en/stable/run.html#paste -deployment

рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд╡рд╣ рдХреЗрд╡рд▓ Gunicorn рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкреЗрд╕реНрдЯ рдкрд░рд┐рдирд┐рдпреЛрдЬрди CLI рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред Gunicorn рдЕрднреА рднреА _is a_ рд╕реНрд╡рдпрдВ рд╕рдВрдЧрдд рд╕рд░реНрд╡рд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВред

рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрднрд╛рд╡рд┐рдд рднреНрд░рдо рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд╣рд╛рдВ .ini рдлрд╝рд╛рдЗрд▓ рдЕрдкрдиреЗ server рдмреНрд▓реЙрдХ рдореЗрдВ рд╡реЗрдЯреНрд░реЗрд╕, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕реЗ gunicorn --paste production.ini рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд╡реЗрдЯреНрд░реЗрд╕ рдмрд┐рд▓реНрдХреБрд▓ред рд▓реЛрдЧ рдЕрдХреНрд╕рд░ $# server:main рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ server рдмреНрд▓реЙрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рднреА рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВред рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдмрдирд╛рдП рд░рдЦрдирд╛ рдЬрдм pserve рдЬреИрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдЪреНрдЫреЗ рд╕реАрдПрд▓рдЖрдИ рдореМрдЬреВрдж рд╣реЛрдВ рддреЛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛ред

gunicorn рд╕реАрдПрд▓рдЖрдИ рдПрдХ рдЖрдИрдПрдирдЖрдИ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ Gunicorn рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП INI рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдкреНрд░реЛрд╕реЗрд╕ рд░рдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреВрд▓ (рдЬреИрд╕реЗ pserve ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдкрдиреА рдкрд╣рд▓реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ --config рдХреЗ рд╕рд╛рде --paste рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред
рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рд┐рдВрдЧрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ (.ini) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдкрдЧреНрд░реЗрдб/рдСрдЯреЛрд╕реНрдХреЗрд▓ рд▓реЙрдЬрд┐рдХ рд╣реИрдВ рдЬреЛ .ini рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдПрдХ рдХрд╕реНрдЯрдо рдкрд╛рдпрдерди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --config рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ

  • рдХрд╕реНрдЯрдо рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреНрд░рд╛рд░реВрдк (рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ .ini рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ)
  • рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди (рдкрд╛рдпрдерди рдХреЛрдб)

Gunicorn рдкреЗрд╕реНрдЯ рд╕рдВрдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рджреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬрд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлреЛрд░реНрдХрд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рдо рд╣реИ Gunicorn рдФрд░ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдХрд╛рдВрдЯреЗ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ред

рдореБрдЭреЗ рдЗрд╕ рдЯрд┐рдХрдЯ рдХрд╛ рдФрдЪрд┐рддреНрдп рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕рд╛рде рдЧрдирд┐рдХреЛрд░реНрди рдФрд░ рд╡реЗрдЯреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдмрд╛рдЗрдирд░реА рдЪрд▓рд╛рдирд╛ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЖрдИрдПрдордПрдЪрдУред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдВрдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдХрдард┐рди рддреНрд░реБрдЯрд┐ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рддреЛ рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рдо рд╢рд╛рдпрдж рд╡рд╛рдкрд╕ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдЙрдкрдпреЛрдЧрдХреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдареАрдХ рд░рд╣реЗрдЧрд╛
рдЗрд╕рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЪреЗрддрд╛рд╡рдиреА?

рд╢реБрдХреНрд░ 16 рдЕрдХреНрдЯреВрдмрд░ 2020 рдХреЛ 08:28 рдмрдЬреЗ рдорд╛рд░реНрд╕рд┐рди рдХреБ┼║рдореА┼Дрд╕реНрдХреА рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ --config рдХреЗ рд╕рд╛рде --paste рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдореЗрд░реЗ 1 st . рдХреЗ рдЕрдиреБрд╕рд╛рд░
рдЯрд┐рдкреНрдкрдгреАред
рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рд┐рдВрдЧрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ (.ini) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдкрдЧреНрд░реЗрдб/рдСрдЯреЛрд╕реНрдХреЗрд▓ рд▓реЙрдЬрд┐рдХ рд╣реИрдВ рдЬреЛ рд╕рд┐рд░реНрдл .ini рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдбрдЬрд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╣рдо рдПрдХ рдХрд╕реНрдЯрдо рдкрд╛рдпрдерди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --config рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ

  • рдХрд╕реНрдЯрдо рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдкреНрд░рд╛рд░реВрдк (рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ
    ini рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ)
  • рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди

Gunicorn рдкреЗрд╕реНрдЯ рд╕рдВрдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЗрд╕ рддрд░рд╣ рд╕реАрдорд┐рдд рд╣реИ,
рдФрд░ рдЗрд╕рдиреЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЦрдбрд╝реА рдХрд░ рджреА рдЬрд┐рд╕рд╕реЗ рд╣рдо рдЙрдмрд░ рдирд╣реАрдВ рдкрд╛ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдХрд╛рд░рдг рдкрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рд╕рд╛рде рдЧрдирд┐рдХреЛрд░реНрди рдФрд░ рд╡реЗрдЯреНрд░реЗрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рдереЗ,
рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрдирд┐рдХреЛрд░реНрди рдмрд╛рдЗрдирд░реА рдЪрд▓рд╛рдирд╛ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЖрдИрдПрдордПрдЪрдУред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/benoitc/gunicorn/issues/2169#issuecomment-709838842 ,
рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAADRIQR2CLVUOYK6FDY2ZDSK7RZFANCNFSM4JMI65YA
.

>

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

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

рдЬреИрд╕реЗ

use = egg:gunicorn#main
workers = 2
config = /path/to/gunicorn_conf.py

рддреЛ рдпрд╣ gunicorn_conf.py рдХреЛ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рдЬреИрд╕реЗ --config=/path/to/gunicorn_conf.py рдХрд░рддрд╛ рд╣реИ

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

рдЕрдиреНрдпрдерд╛, рдпрджрд┐ рдЖрдк gunicorn рдмрд╛рдЗрдирд░реА рдЪрд▓рд╛рддреЗ рд╕рдордп .ini рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдореЗрдВ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рдиреА рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ

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

рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИред рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдПрдХ рдмрдЧ рдлрд╛рдЗрд▓ рдХрд░реЗрдВ!

рдареАрдХ рд╣реИ, рд╣рдо рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди AFAIR рдореЗрдВ рдереЛрдбрд╝реЗ рд╕реЗ рдмрджрд▓рд╛рд╡ рдереЗ рдХрд┐ рдХреИрд╕реЗ рдЧрдирд┐рдХреЛрд░реНрди рдмрдирд╛рдо рд╕рдВрд░рдХреНрд╖рд┐рдд рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рддреЛ gunicorn --paste рдХреА .ini рдлрд╝рд╛рдЗрд▓ рдкрде рддрдХ рдкрд╣реБрдВрдЪ рдереА, рдЬрдмрдХрд┐ gunicorn рдЕрдВрдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдерд╛ред рд╣рдо рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдПрдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЯрд┐рдХрдЯ рдЦреЛрд▓реЗрдВрдЧреЗред

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

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

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

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

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

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

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