Gunicorn: рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛/рдХреИрд╕реЗ рдЯрд╛рдЗрдордЖрдЙрдЯ рдФрд░ рдЧреНрд░реЗрд╕рдлреБрд▓_рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  30рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: benoitc/gunicorn

(рдпрд╣рд╛рдВ рдПрдХрд╛рд▓рд╛рдк рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ: рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬреЗрдВ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдИрдВ рдФрд░ рдореИрдВрдиреЗ рдвреЗрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреБрджрд╛рдИ рд╕рдорд╛рдкреНрдд рдХрд░ рджреАред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рд╣реИред)

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╕рдордЭрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ:

  • рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ 30 рд╕реЗрдХрдВрдб ( timeout рдХреЗ рд╕рд╛рде рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп) рдХреЗ рдмрд╛рдж, рдЧрдирд┐рдХреЛрд░реНрди рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╕реБрдВрджрд░ рдкреБрдирд░рд╛рд░рдВрдн рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ SIGTERM рднреЗрдЬрддреА рд╣реИред
  • рдпрджрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп 30 рд╕реЗрдХрдВрдб ( graceful_timeout рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп) рдХреЗ рджреМрд░рд╛рди рд╢рдЯрдбрд╛рдЙрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ SIGKILL рднреЗрдЬрддреА рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдХреЗрдд рддрдм рднреА рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ _does_ graceful_timeout рдЕрд╡рдзрд┐ (https://github.com/benoitc/gunicorn/commit/d1a09732256fa8db900a1fe75a71466cf2645ef9) рдХреЗ рджреМрд░рд╛рди рдЗрдирд╛рдпрдд рд╕реЗ рд╢рдЯрдбрд╛рдЙрди рдХрд░рддрд╛ рд╣реИред

рд╕рд╡рд╛рд▓реЛ рдХрд╛:

  • рдХреНрдпрд╛ рд╕рдВрдХреЗрдд рд╕рд╣реА рд╣реИрдВ?
  • рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЧрдирд┐рдХреЛрд░реНрди (рд╕рд┐рдВрдХ) рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрди рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рдРрдк рдХреЛ рдХреИрд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рдЧреНрдирд▓ рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл "рдЗрд╕реЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ")?
  • рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд▓рд╛рд╕реНрдХ SIGTERM рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ - рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдбрдмреНрд▓реВрдПрд╕рдЬреАрдЖрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рд╡рд░реНрдХрдЬрд╝реЗрдЧ рд╕реНрддрд░ рдкрд░) рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрд╛ SIGTERM рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЖрдИрдУ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдорд╛рд░ рдбрд╛рд▓реЛ рдпрд╛ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ ...?

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

рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдкреАрдЖрд░ рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВред

Discussion Documentation

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

@tuukkamustonen --timeout рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЬреАрд╡рд┐рдХрд╛ рдЬрд╛рдВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рд╕рд┐рдВрдХ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╢реНрд░рдорд┐рдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рднреА рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрд╕реЗ рдмреНрд▓реЙрдХ/рдлреНрд░реАрдЬ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рддрдм рддрдХ рдЗрд╕реЗ рдирд╣реАрдВ рдорд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред

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

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

рд╣рдореНрдо, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/benoitc/gunicorn/issues/1236#issuecomment -254059927 SIGTERM рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рдзрд╛рд░рдгрд╛рдУрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛ (рдФрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдирд╛) рдХреЛрдИ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди)ред

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ graceful_timeout рдФрд░ timeout рдХреЗ рдмреАрдЪ рд▓реМрдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╣реИ рдирд╛?

рдореИрдВрдиреЗ app.py рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛:

import time
from flask import Flask

app = Flask(__name__)

@app.route('/foo')
def foo():
    time.sleep(3)
    return 'ok'

рдлрд┐рд░:

12:51 $ gunicorn app:app --timeout 5 --graceful-timeout 1
[2017-04-03 12:51:37 +0300] [356] [INFO] Starting gunicorn 19.6.0
[2017-04-03 12:51:37 +0300] [356] [INFO] Listening at: http://127.0.0.1:8000 (356)
[2017-04-03 12:51:37 +0300] [356] [INFO] Using worker: sync
[2017-04-03 12:51:37 +0300] [359] [INFO] Booting worker with pid: 359

рдлрд┐рд░ рдореИрдВ curl localhost:8000/foo рднреЗрдЬрддрд╛ рд╣реВрдВ, рдЬреЛ 3 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЧрдирд┐рдХреЛрд░реНрди рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░реЗрд╕рдлреБрд▓ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рд╢реБрд░реВ рд╣реЛрдиреЗ рдпрд╛ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдирд┐рд╢рд╛рди рдирд╣реАрдВ рд╣реИ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ timeout рдкрд░, SystemExit(1,) рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлреНрд▓рд╛рд╕реНрдХ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░рд╕реНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреМрди рд╕рд╛ рдХреЛрдб рдпрд╛ рд╕рд┐рдЧреНрдирд▓ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ред

рдпрд╣ рдЕрдкрд╡рд╛рдж рдлреНрд▓рд╛рд╕реНрдХ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдИ рднреА teardown_request рд╣реИрдВрдбрд▓рд░ рдЗрд╕реЗ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИред рдХреБрдЫ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рд╣реИрдВрдбрд▓рд░ рдореЗрдВ time.sleep(1) рдпрд╛ рдХреБрдЫ рдФрд░ рд╕рдордп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЪреБрдкрдЪрд╛рдк рдорд╛рд░рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдРрд╕рд╛ рд╣реИ рдЬреИрд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд▓рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 100-200ms рд╕рдордп рдерд╛ рдФрд░ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рджреЗрд░реА рдХреНрдпрд╛ рд╣реИред рдпрд╣ рд╕реБрдВрджрд░ рд╕рдордпрдмрд╛рд╣реНрдп рдирд╣реАрдВ рд╣реИ, рдЙрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╡рд┐рд▓рдВрдм рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред рдореИрдВ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SystemExit рдХреЛ рдлреЗрдВрдХрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдмрд░рджрд╕реНрддреА рдорд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдордзреНрдп-рд╣рд╡рд╛ рдореЗрдВ рдорд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ graceful_timeout рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реБрдП рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ - рд╢рд╛рдпрдж рдпрд╣ рд╕рд┐рдВрдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рдпрд╛ рд╢рд╛рдпрдж рдпрд╣ "рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди" (рдпрд╛ timeout рдХреЗ рд╕рд╛рде) рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЬрдм рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ SIGTERM рднреЗрдЬрддреЗ рд╣реИрдВ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬреЛ рдЕрдЬреАрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ https://github.com/benoitc/gunicorn/blob/master/gunicorn/arbiter.py#L392 graceful рдзреНрд╡рдЬ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/benoitc/gunicorn/blob/master/gunicorn/arbiter.py#L390 рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ self.WORKERS рдЦрд╛рд▓реА рд╣реИ рдЗрд╕рд▓рд┐рдП рдЧреИрд░-рд╕реБрдВрджрд░ рд╕реНрдЯреЙрдк рдХрд░рддреЗ рд╕рдордп рд╕реБрдВрджрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред

@benoitc @tilgovi рдпрд╣рд╛рдВ рд╣рд╛рде рджреЗрдиреЗ рдХреА рджреЗрдЦрднрд╛рд▓? рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдКрдкрд░ рдореЗрд░реЗ рд▓реЗрдЦрди рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ ...

@ tuco86 graceful timeout рдХреЗрд╡рд▓ рддрднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдордзреНрдпрд╕реНрде рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ (USR2), рдордзреНрдпрд╕реНрде рдХреЛ рдПрдХ HUP рд╕рдВрдХреЗрдд рднреЗрдЬрддреЗ рд╣реИрдВ рдпрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ QUIT рд╕рдВрдХреЗрдд рднреЗрдЬрддреЗ рд╣реИрдВред рдпрд╛рдиреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрддреА рд╣реИ

рд╡реНрдпрд╕реНрдд рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЕрдиреНрдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордпрдмрд╛рд╣реНрдп рдпрд╣рд╛рдБ рд╣реИред рдпрджрд┐ рд╡реЗ timeout рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ рдордзреНрдпрд╕реНрде рдХреЛ рд╕реВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмрд╕ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрд╣, рдареАрдХ рд╣реИред рдХреНрдпрд╛ timeout рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрдм рдЖрдк:

рдордзреНрдпрд╕реНрде рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ, рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ (USR2), рдордзреНрдпрд╕реНрде рдХреЛ рдПрдХ HUP рд╕рдВрдХреЗрдд рднреЗрдЬреЗрдВ рдпрд╛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдПрдХ QUIT рд╕рдВрдХреЗрдд рднреЗрдЬреЗрдВ

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ graceful_timeout рдореЗрдВ рд╢рдЯрдбрд╛рдЙрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЙрд╕рдХреЗ рдмрд╛рдж timeout рдХрд┐рдХ рдХрд░реЗрдЧрд╛ рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рдмрд▓рдкреВрд░реНрд╡рдХ рдорд╛рд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП SIGQUIT рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рд╕рдВрдХреЗрдд рдЫреЛрдбрд╝реЛ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм TERM рдерд╛ (рдЬреИрд╕рд╛ рдХрд┐ QUIT рдХреЛ рдорд╛рд╕реНрдЯрд░ рдФрд░ рд╢реНрд░рдорд┐рдХреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП _quick рд╢рдЯрдбрд╛рдЙрди_ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)?

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

рдмреЗрд╢рдХред рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@benoitc рдЗрд╕ рдкреБрд░рд╛рдиреЗ рдЯрд┐рдХрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреВрдЫрдирд╛ - timeout рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдЕрдВрддрд┐рдо рд╡рд╛рдХреНрдп рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ?

рдЖрдо рддреМрд░ рдкрд░ рддреАрд╕ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕реЗ рдХреЗрд╡рд▓ рддрднреА рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрдм рдЖрдк рд╕рд┐рдВрдХ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирддреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдВред рдЧреИрд░-рд╕рд┐рдВрдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрднреА рднреА рд╕рдВрдЪрд╛рд░ рдХрд░ рд░рд╣реА рд╣реИ рдФрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордп рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рдмрдВрдзреА рдирд╣реАрдВ рд╣реИред

рдПрдХ рджреЗрд╢реА рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддреА рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ timeout рдЧреИрд░-рд╕рд┐рдВрдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдпрд╣реА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ: рдореИрдВ gthread рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдмрд╣реБрдд рдзреАрдореА рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдорд╛рд░ рд░рд╣рд╛ рд╣реИ )?

@tuukkamustonen --timeout рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЬреАрд╡рд┐рдХрд╛ рдЬрд╛рдВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рд╕рд┐рдВрдХ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╢реНрд░рдорд┐рдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рднреА рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЗрд╕реЗ рдмреНрд▓реЙрдХ/рдлреНрд░реАрдЬ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рддрдм рддрдХ рдЗрд╕реЗ рдирд╣реАрдВ рдорд╛рд░рд╛ рдЬрд╛рдПрдЧрд╛ред

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

@tilgovi timeout рдареАрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ worker_timeout рдЬреИрд╕рд╛ рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд░реНрдгрдирд╛рддреНрдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рд╢реБрд░реВ рдореЗрдВ рднреНрд░рдорд┐рдд рд╣реЛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ timeout рдФрд░ graceful_timeout рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдиреЗ рдорд╛рдирд╛ рдХрд┐ рд╡реЗ рдХрд╕рдХрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЬрдмрдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред

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

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ рдЬрдм timeout рдЧреИрд░-рд╕рд┐рдВрдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдХрднреА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рдЕрдЧрд░ рдХреЛрдИ рдмрдЧ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз/рдлреНрд░реАрдЬ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ?

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

рди рдХреЗрд╡рд▓ рдПрдХ рдмрдЧ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрднреА-рдХрднреА рдпрд╣ рдПрдХ рдмрдЧ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рдЕрд╡рд░реБрджреНрдз I/O рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЬрдм рдПрдХ asyncio рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред

рд╕реАрдкреАрдпреВ рдЧрд╣рди рдХрд╛рд░реНрдп рдореЗрдВ рдлрдВрд╕рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдзрдиреНрдпрд╡рд╛рджред

Async рдХреЛрдб рдореЗрдВ I/O рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рднреА рдПрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ - рдореИрдВ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдлреНрд▓рд╛рд╕реНрдХ рдРрдк рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдХ рдПрд╕рд┐рдВрдХ рд╡рд░реНрдХрд░ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ ( gthread ) рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдВрджрд░ рдкреИрдЪрд┐рдВрдЧ рдХреЗред рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрд╕рд┐рдВрдХ/рд╕рд┐рдВрдХ рдХреЛрдб рдХреЛ рдорд┐рд╢реНрд░рдг рдФрд░ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИрдВ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджрд┐рд▓ рдХреА рдзрдбрд╝рдХрди рдХрд╛ рдЕрдВрддрд░рд╛рд▓ рдХреНрдпрд╛ рд╣реИ? рдЧреИрд░-рд╕рд┐рдВрдХ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд╕рд╛рде timeout рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдордЭрджрд╛рд░ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

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

рдЬрдм рддрдХ рдЖрдк рд╡рд░реНрдХрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЯрд╛рдЗрдордЖрдЙрдЯ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рдареАрдХ рд╣реИред рдмрд╕ рдПрдХ рдФрд░ рдмрд╛рдд:

gthread рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдирд╣реАрдВ рд╣реИ

рдпрд╣ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ gthread рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ async рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди http://docs.gunicorn.org/en/stable/design.html#asyncio -workers рдкрд░ "AsyncIO" рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдереНрд░реЗрдбреНрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рд┐рдВрдХреНрд╕рд┐рдпреЛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрд╛рдардХ рдореЗрдВ рднреА рд╕рд╡рд╛рд▓ рдЙрдарддреЗ рд╣реИрдВред рдПрдХ рднреЛрд▓реЗ-рднрд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╣ рдХрд╣рдирд╛, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, gthread рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ asyncio lib рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рдВрдХ рдХреЛрдб рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрд╛рдЧреЗ рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИред рдЕрдЧрд░ рдЧрд▓рдд рд╣реЛ рддреЛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЛред

рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкреВрдЫрд╛!

рдереНрд░реЗрдбреЗрдб рд╡рд░реНрдХрд░ asyncio рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмреЗрд╕ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╡рд░реНрдХрд░ рдХреНрд▓рд╛рд╕ рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдФрд░ рдЗрд╕реЗ рд╕рднреА рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рд╣рд╛рдБ gthreads рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ asyncio рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрд░реНрдордЪрд╛рд░реА рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЦрдВрдб рдмреЗрд╣рддрд░ рд╣реЛ?

рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рддрд╛рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╡рд░реНрдХрд░ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЯрд╛рдЗрдордЖрдЙрдЯ рдкрд░ рдЕрдиреБрднрд╛рдЧ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХреЗрдВред

@tilgovi

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

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

@aschatten рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдирд╣реАрдВ рд╣реИред #1658 рднреА рджреЗрдЦреЗрдВред

рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдорд╛рд░ рдбрд╛рд▓реЛ рдЬрд┐рд╕рдиреЗ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рдХреЗ рднреАрддрд░ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛

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

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

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

рджреГрд╖реНрдЯрд┐рдХреЛрдг max_request рдХреЗ рд╕рдорд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИред

рд╣рдо рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдПрдХ рд░рд┐рд▓реАрдЬ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ _may_ R20 рдХреЗ рд▓рд┐рдП рд╢рд╛рдЦрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдХреБрдЫ рдкреНрд░рдореБрдЦ рдЪреАрдЬреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдЙрдЪрд┐рдд рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рдореЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдпрд╣ рд╕рд╣реА рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдореИрдВ рдЬреЛ рдЖрдИрдПрдордУ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ:

рдкреНрд░рддреНрдпреЗрдХ рдЕрдзрд┐рдХрддрдо-рдЕрдиреБрд░реЛрдз рдЕрдиреБрд░реЛрдз (рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реНрдг рд╣реЛ рдЧрдП рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ 4 рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрдиреБрд░реЛрдз 1, 2 рдФрд░ 4 рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреБрд░реЛрдз 3 рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред

рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд┐рдиреНрдпрд╛рд╕:

  • рдереНрд░реЗрдб рд╡рд░реНрдХрд░
  • рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдз рд╕рдордпрдмрд╛рд╣реНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ
  • рдЕрдзрд┐рдХрддрдо-рдЕрдиреБрд░реЛрдз рдЧреИрд░-рд╢реВрдиреНрдп рд╣реИ
import time

def app(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/plain; charset=utf-8')])
    time.sleep(5)
    return [b"Hello World\n"]

рдЧрдирд┐рдХреЛрд░реНрди:

gunicorn --log-level debug -k gthread -t 4 --max-requests 3 "app:app"
...
[2018-02-08 10:11:59 +0200] [28592] [INFO] Starting gunicorn 19.7.1
[2018-02-08 10:11:59 +0200] [28592] [DEBUG] Arbiter booted
[2018-02-08 10:11:59 +0200] [28592] [INFO] Listening at: http://127.0.0.1:8000 (28592)
[2018-02-08 10:11:59 +0200] [28592] [INFO] Using worker: gthread
[2018-02-08 10:11:59 +0200] [28595] [INFO] Booting worker with pid: 28595
[2018-02-08 10:11:59 +0200] [28592] [DEBUG] 1 workers
[2018-02-08 10:12:06 +0200] [28595] [DEBUG] GET /
[2018-02-08 10:12:11 +0200] [28595] [DEBUG] Closing connection.
[2018-02-08 10:12:15 +0200] [28595] [DEBUG] GET /
[2018-02-08 10:12:20 +0200] [28595] [DEBUG] Closing connection.
[2018-02-08 10:12:23 +0200] [28595] [DEBUG] GET /
[2018-02-08 10:12:23 +0200] [28595] [INFO] Autorestarting worker after current request.
[2018-02-08 10:12:27 +0200] [28592] [CRITICAL] WORKER TIMEOUT (pid:28595)
[2018-02-08 10:12:27 +0200] [28595] [INFO] Worker exiting (pid: 28595)
[2018-02-08 10:12:28 +0200] [28595] [DEBUG] Closing connection.
[2018-02-08 10:12:28 +0200] [28599] [INFO] Booting worker with pid: 28599
[2018-02-08 10:12:32 +0200] [28599] [DEBUG] GET /
[2018-02-08 10:12:37 +0200] [28599] [DEBUG] Closing connection.
^C[2018-02-08 10:12:39 +0200] [28592] [INFO] Handling signal: int

рдЧреНрд░рд╛рд╣рдХ:

[salonen<strong i="19">@mac</strong> ~]$ curl http://127.0.0.1:8000
Hello World
[salonen<strong i="20">@mac</strong> ~]$ curl http://127.0.0.1:8000
Hello World
[salonen<strong i="21">@mac</strong> ~]$ curl http://127.0.0.1:8000
curl: (52) Empty reply from server
[salonen<strong i="22">@mac</strong> ~]$ curl http://127.0.0.1:8000
Hello World

рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП? рдореЗрд░реЗ рдорди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

  • [ ] рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рд╡рд┐рд╡рд░рдг рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ (рдпрджрд┐ рдЕрднреА рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ)
  • [] рдореГрдд рдпрд╛ рдЕрд╡рд░реБрджреНрдз рд╢реНрд░рдорд┐рдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░реЗрдВ

рдХреНрдпрд╛ рдпрд╣ 20.0 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╣рдо рдЗрд╕реЗ рд╕реНрдердЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛

рдЕрд░реЗ, рддреЛ рдпрд╣ 20.0 рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛?

рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЛ рдЙрдЪрд┐рдд рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рдореЗрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдпрд╣ рд╕рд╣реА рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ред @ lucas03 рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреНрдпрд╛ рд╣реИред рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреБрдЫ рдЦрд╛рд╕ рдЪрд╛рд╣рд┐рдП рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдХрдЯ рдЦреЛрд▓реЗрдВред

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

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

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

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

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

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

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