๐Ÿ“Using Gunicorn as WSGI

๊น€์„ธ์ค€ยท2021๋…„ 4์›” 3์ผ
0

Using Log - ๋„๊ตฌ ์‚ฌ์šฉ๊ธฐ!

๋ชฉ๋ก ๋ณด๊ธฐ
3/3

TikiTaka ํ”„๋กœ์ ํŠธ์˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ์€
AWS EC2 โ†’ Flask ๋‚ด์žฅ ์„œ๋ฒ„(docker) ๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค.
์›น ํ”„๋ก ํŠธ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋™์‹œ์— 2๊ฐœ์˜ API ์š”์ฒญ์ด ์ด๋ฃจ์–ด์งˆ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๊ณ  ์ง€์ ํ–ˆ๋‹ค.

์•„๋งˆ Flask ๋‚ด์žฅ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ 1๊ฐœ์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์„ ๋•Œ, ๋‹ค๋ฅธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ์˜ˆ์ƒํ•˜์—ฌ Gunicorn์„ ๋„์ž…ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

Gunicorn์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ์ด์œ ๋Š”
1. ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ(ios, android)๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ  ์›น ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.
2. ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์นจํ•  ๋•Œ api 2๊ฐœ๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•œ๋‹ค๋Š” ์ฐจ์ด์ ์ด ์žˆ์—ˆ๋‹ค.
3. Flask ๋‚ด์žฅ ์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์—ˆ๊ณ 
4. Gunicorn์˜ workers option์ด ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‹คํ–‰ํžˆ Gunicorn๋ฅผ wsgi๋กœ ์‚ฌ์šฉํ•˜๋‹ˆ ํ•ด๋‹น ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์กŒ๋‹ค.
๋Œ€์‹  portainer์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

โ€”log-level ์˜ต์…˜์„ debug๋กœ ์„ค์ •ํ•˜๋‹ˆ http ์š”์ฒญ์ด ๋กœ๊ทธ์ฐฝ์— ๋–ด๋‹ค.
print๋ฌธ์€ log์ฐฝ์— ๋œจ์ง€ ์•Š๋Š” ๊ฑธ ๋ณด๋‹ˆ ์‹ค์‹œ๊ฐ„ logging ์ถœ๋ ฅ์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ด์•ผ ๊ฒ ๋‹ค.

gunicorn --bind 0.0.0.0:5000 --workers=4 --log-level debug app.__main__:app
  • โ€”bind : ip ์„ค์ •
  • โ€”workers : ๋™์‹œ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค
  • โ€”log-level: debug๋กœ ์„ค์ • ์‹œ log ์ถœ๋ ฅ
  • (app.\__main__:app): ์•ž์—๋Š” app์ด ์œ„์น˜ํ•œ ํŒŒ์ผ, ๋’ค์—๋Š” app ๋ณ€์ˆ˜๋ช…

์ฃผ์˜์‚ฌํ•ญ

if __main__ == '__name__':
	app = create_app(Config)
	app.run()
  • find error๊ฐ€ ๋‚œ๋‹ค
app = create_app(Config)
  • ์‹คํ–‰๋ฌธ์„ ์—†์• ์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€