์ฌํํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด gunicorn์ ์์ํ์ญ์์ค.
gunicorn -w 1 --max-requests=0 --max-requests-jitter=10 -b 0.0.0.0:8000 api:app
๊ทธ๋ฐ ๋ค์ ์ผ๋ถ ํธ๋ํฝ์ ํด๋น ์ฌ์ดํธ๋ก ๋ณด๋ด๊ณ ๋ค์ ๋ก๊ทธ ์ถ๋ ฅ์ ๊ด์ฐฐํฉ๋๋ค.
[2019-02-05 20:27:23 +0000] [19] [INFO] Starting gunicorn 19.9.0
[2019-02-05 20:27:23 +0000] [19] [INFO] Listening at: http://0.0.0.0:8000 (19)
[2019-02-05 20:27:23 +0000] [19] [INFO] Using worker: sync
[2019-02-05 20:27:23 +0000] [22] [INFO] Booting worker with pid: 22
[2019-02-05 20:27:37 +0000] [22] [INFO] Autorestarting worker after current request.
[2019-02-05 20:27:37 +0000] [22] [INFO] Worker exiting (pid: 22)
[2019-02-05 20:27:37 +0000] [24] [INFO] Booting worker with pid: 24
--max-requests
๊ฐ 0์ผ๋ก ์ค์ ๋๋ฉด --max-requests-jitter
๊ฐ ํจ๊ณผ๊ฐ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋น์ ์ด ๊ธฐ๋ํ๋ ํ๋์ ๋ฌด์์
๋๊น? ์ผ๋ฐ์ ์ผ๋ก max-requests=0
๋ ์์
์๊ฐ ์๋์ผ๋ก ๋ค์ ์์ํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํด์ผ ํ์ง๋ง ๋ก๊ทธ์์๋ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
์ด ์ค๋ฅ๋ d4e1bfe5bd7801c160282310875c70cec15b7c07์ ๋์ ๋์์ต๋๋ค.
๋ผ์ธ self.max_requests = cfg.max_requests + jitter or MAXSIZE
์ง๊ธ self.max_requests = cfg.max_requests + jitter or sys.maxsize
e974f30517261b2bc95cfb2017a8688f367c8bf3 ์ค์ ๋๋ฌธ์ self.max_requests
_jitter_ ๊ฐ.
์ค์ ๊ฐ์ด 0๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ง ์ค์ ๋ก self.max_requests
์ค์ ํด์ผ ํฉ๋๋ค.
@joekohlsdorf ์์ ํจ์น๋ ์ค๋ฅ๋ฅผ ์์ ํด์ผ ํ์ง๋ง ์ ํฌ์๊ฒ ์๋ ค์ฃผ์ธ์...
๋๋ถ์ ์ข์๋ณด์ด๋ค์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ์ค๋ฅ๋ d4e1bfe5bd7801c160282310875c70cec15b7c07์ ๋์ ๋์์ต๋๋ค.
๋ผ์ธ
self.max_requests = cfg.max_requests + jitter or MAXSIZE
์ง๊ธself.max_requests = cfg.max_requests + jitter or sys.maxsize
e974f30517261b2bc95cfb2017a8688f367c8bf3 ์ค์ ๋๋ฌธ์self.max_requests
_jitter_ ๊ฐ.์ค์ ๊ฐ์ด 0๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ง ์ค์ ๋ก
self.max_requests
์ค์ ํด์ผ ํฉ๋๋ค.