๐ ๐ฝ โ - Uvicorn¶
๐ ๐ ๐ ๐ช ๐ FastAPI ๐ธ ๐ฐ ๐ฝ ๐ฐ ๐ซ ๐ฝ ๐ ๐ Uvicorn.
๐ค 3๏ธโฃ ๐ ๐:
- Uvicorn: โ ๐ญ ๐ซ ๐ฝ.
- Hypercorn: ๐ซ ๐ฝ ๐ โฎ๏ธ ๐บ๐ธ๐/2๏ธโฃ & ๐ป ๐ช ๐ โ.
- ๐ธ: ๐ซ ๐ฝ ๐ โณ ๐ป.
๐ฝ ๐ฐ & ๐ฝ ๐¶
๐ค ๐คช โน ๐ ๐ โ๏ธ ๐คฏ. ๐ถ
๐ค "๐ฝ" ๐ โ๏ธ ๐ ๐ฏโโ๏ธ ๐ฐ/โ ๐ป (โ โ๏ธ ๐น ๐ฐ) & ๐ ๐ ๐โโ ๐ ๐ ๐ฐ (โ Uvicorn).
โ๏ธ ๐ ๐คฏ ๐โ ๐ โ "๐ฝ" ๐ข, โซ๏ธ ๐ช ๐ 1๏ธโฃ ๐ 2๏ธโฃ ๐.
๐โ ๐ ๐ฐ ๐ฐ, โซ๏ธ โ ๐ค โซ๏ธ ๐ฝ, โ๏ธ ๐ฐ, ๐พ (๐น ๐ฐ), ๐ธ. ๐ ๐ ๐ ๐ ๐ฐ ๐ฐ, ๐ ๐โโ ๐พ, ๐โ ๐ ๐ ๐.
โ ๐ฝ ๐¶
๐ ๐ช โ ๐ซ ๐ ๐ฝ โฎ๏ธ:
- Uvicorn, ๐ฉ-โฉ ๐ซ ๐ฝ, ๐ ๐ uvloop & httptool.
$ pip install "uvicorn[standard]"
---> 100%
Tip
โ standard
, Uvicorn ๐ โ & โ๏ธ ๐ โ ๐.
๐ โ
uvloop
, โ-๐ญ ๐ง-โป asyncio
, ๐ ๐ ๐ฆ ๐ ๏ธ ๐ญ ๐.
- Hypercorn, ๐ซ ๐ฝ ๐ โฎ๏ธ ๐บ๐ธ๐/2๏ธโฃ.
$ pip install hypercorn
---> 100%
...โ๏ธ ๐ ๐ ๐ซ ๐ฝ.
๐ ๐ฝ ๐¶
๐ ๐ช โคด๏ธ ๐ ๐ ๐ธ ๐ ๐ ๐ โ๏ธ โ ๐ฐ, โ๏ธ ๐ต --reload
๐, โ
:
$ uvicorn main:app --host 0.0.0.0 --port 80
<span style="color: green;">INFO</span>: Uvicorn running on http://0.0.0.0:80 (Press CTRL+C to quit)
$ hypercorn main:app --bind 0.0.0.0:80
Running on 0.0.0.0:8080 over http (CTRL + C to quit)
Warning
๐ญ โ --reload
๐ ๐ฅ ๐ โ๏ธ โซ๏ธ.
--reload
๐ ๐ด ๐
๐
โน, ๐
โ , โ๏ธ.
โซ๏ธ โน ๐ โฎ๏ธ ๐ ๏ธ, โ๏ธ ๐ ๐ซ๐ ๐ซ โ๏ธ โซ๏ธ ๐ญ.
Hypercorn โฎ๏ธ ๐ป¶
๐ & FastAPI โ๏ธ ๐ AnyIO, โ โ ๐ซ ๐ โฎ๏ธ ๐ฏโโ๏ธ ๐ ๐ฉ ๐ โณ & ๐ป.
๐, Uvicorn โณ ๐ด ๐ โฎ๏ธ โณ, & โซ๏ธ ๐ โ๏ธ uvloop
, โ-๐ญ ๐ง-โป asyncio
.
โ๏ธ ๐ฅ ๐ ๐ ๐ โ๏ธ ๐ป, โคด๏ธ ๐ ๐ช โ๏ธ Hypercorn โซ๏ธ ๐โ๐ฆบ โซ๏ธ. ๐ถ
โ Hypercorn โฎ๏ธ ๐ป¶
๐ฅ ๐ ๐ช โ Hypercorn โฎ๏ธ ๐ป ๐โ๐ฆบ:
$ pip install "hypercorn[trio]"
---> 100%
๐ โฎ๏ธ ๐ป¶
โคด๏ธ ๐ ๐ช ๐ถโโ๏ธ ๐ โธ ๐ --worker-class
โฎ๏ธ ๐ฒ trio
:
$ hypercorn main:app --worker-class trio
& ๐ ๐ โถ๏ธ Hypercorn โฎ๏ธ ๐ ๐ฑ โ๏ธ ๐ป ๐ฉโ๐ป.
๐ ๐ ๐ช โ๏ธ ๐ป ๐ ๐ ๐ฑ. โ๏ธ ๐, ๐ ๐ช โ๏ธ AnyIO, ๐ง ๐ ๐ ๐ โฎ๏ธ ๐ฏโโ๏ธ ๐ป & โณ. ๐ถ
๐ ๏ธ ๐ง¶
๐ซ ๐ผ ๐ ๐ฝ ๐ (๐ง.โ Uvicorn), โถ๏ธ ๐ ๐ ๏ธ, ๐ ๐ ๐ ๐ข (0.0.0.0
) ๐ ๐ โด (โ
80
).
๐ ๐ฐ ๐ญ. โ๏ธ ๐ ๐ ๐ฒ ๐ โ ๐ ๐ ๐, ๐:
- ๐โโ - ๐บ๐ธ๐
- ๐โโ ๐ ๐ด
- โ
- ๐งฌ (๐ข ๐ ๏ธ ๐)
- ๐พ
- โฎ๏ธ ๐ โญ โถ๏ธ
๐ค ๐ ๐ฌ ๐ ๐ ๐ ๐ ๐ซ ๐ง, โ ๐ญ ๐ ๐ซ, & ๐งฑ ๐ผ โฎ๏ธ ๐ ๐ต ๐ซ โญ ๐. ๐ถ