Django-uvicorn.md
django ํ๋ก์ ํธ๋ฅผ ์คํ ํ ๋์๋ ๊ธฐ๋ณธ์ ์ผ๋ก manage.py๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋
$ python manage.py runserver์ ๋ช ๋ น์ด๋ก ์คํํฉ๋๋ค.
ํ์ง๋ง ์ค์ ๋ฐฐํฌ๋ฅผํ ๋์๋ ๋๋ถ๋ถ WAS + wsgi๋ฅผ ์๋ ๋ฐฉ์์ผ๋ก ์๋ฒ๋ฅผ ์คํ์ํต๋๋ค.
์ด ์ด์ ์ ๋ํด ์์๋ณด๋ ์ค ๋ณธ ํฌ์คํธ์์ runserver์ ๋ํด ์ ์ค๋ช ํ๋ ํฌ์คํ ์ด ์์ด ๊ณต์ ํ๋ ค๊ณ ํฉ๋๋ค.
(https://twowix.me/85)
๊ธ์ ๋ด์ฉ์ ์์ฝํด๋ณด์๋ฉด
python manage.py runserver์คํmanage.py
Import Error
execute_from_command_line(sys.argv)
execute_from_command_line(argv)utility = ManagementUtility(argv)utility.execute()
ManagementUtility__init__(): argv ์ธํexecute()subcommand = self.argsorsubcommand = help
CommandParser : ๋๋ฒ์งธ ์ธ์๊ฐ, ์ฆ ์ต์ ์ฒดํฌ
fetch_command(subcommand).run_from_argv(self.argv)
run_from_args
์ ์ ํ์ผ ์ฒดํฌ
DB ์ฒดํฌ
๋ก๊น ์ค์
runserver์คํ
django/core/management/commands/runserver.pyinner_run์๋ฒ ์ข ๋ฃ ์ปค๋งจ๋ ์ ํ
๋ง์ด๊ทธ๋ ์ด์ ์ฒดํฌ
์๋ฒ ์คํ ๋ฐ ์ ํ ๋์ฐ๊ธฐ
run()
rundjango.core.servers.basehttp: python ๊ธฐ๋ณธ http server ์ด๊ธฐ
์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก runserver ๊ฐ ์คํ๋๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ ์ด๋ค ๋ถ๋ถ ๋๋ฌธ์ runserver๋ฅผ ์ค ์๋น์ค ๋ฐฐํฌ์์ ์ฌ์ฉํ์ง ์๋๊ฐ ๋ผ๊ณ ํ๋ค๋ฉด ๋งจ ๋ง์ง๋ง์ ์คํ๋๋ django.core.servers.basehttp ๋ฅผ ์ฌ์ฉํด ์๋ฒ๋ฅผ ์ด๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํด๋น ๋ชจ๋์ ์ ๋ณด๋ฉด ์์ ์ฃผ์ ์ฒ๋ฆฌ๋๊ณณ์ This is a simple server for use in testing or debugging Django apps. it hasn't been reviewed for security issues. DON'T USE IT FOR PRODUCTION USE! ๋ผ๊ณ ์ฐ์ฌ์์ต๋๋ค.
๊ฐ๋จํ๊ฒ ํด์ํ๋ฉด
์ด ์๋ฒ๋ ๊ฐ๋จํ ํ
์คํธ๋ ๋๋ฒ๊น
์ฉ์ผ๋ก ์ฌ์ฉ๋๋๊ฒ์ด๋, ์ ๋ ๋ฐฐํฌ์ฉ์ผ๋ก ์ฌ์ฉํ์ง ๋ง์๋ผ!
๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ด ๋ชจ๋์ ๋ ์ ๋ณด๋ฉด https๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์์ธ์ฒ๋ฆฌ ํ๋ ๋จ๊ณ๋ ์กด์ฌํฉ๋๋ค. ์ด๋งํผ ์๋ฒ์ ๋ณด์๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ๋จํ ์ ์์ต๋๋ค.
์ด์ ๊ฐ์ ์ด์ ๋๋ฌธ์ ์ค์ ๋ฐฐํฌ์์๋ gunicorn, uvicorn ๊ณผ ๊ฐ์ WAS๋ฅผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค. ์ ํํ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ค๋ฅธ ๊ณณ์ ์ฐพ์๋ณด์๋๊ฒ ์ข๊ณ ๊ฐ๋จํ ์คํ๋ช ๋ น์ด ์ ๋๋ง ๊ธฐ๋กํ๋๋ก ํ๊ฒ ์ต๋๋ค.
gunicorn [asgi.py ๋ค์ด์๋ ํด๋ ์ด๋ฆ].asgi:application --bind [IP]:[PORT] -k uvicorn.workers.UvicornWorker์์ ๋ช ๋ น์ด๋ uvicorn์ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ฒ๋ ์๋ฒ๋ฅผ ์คํํ๋ ๋ช ๋ น์ด์ ๋๋ค.
Last updated