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()
app = create_app(Config)