๐ฝ ๐จโ๐ญ - ๐ โฎ๏ธ Uvicorn¶
โก๏ธ โ ๐ ๐ ๐ ๏ธ ๐ง โช๏ธโก๏ธ โญ:
- ๐โโ - ๐บ๐ธ๐
- ๐โโ ๐ ๐ด
- โ
- ๐งฌ (๐ข ๐ ๏ธ ๐)
- ๐พ
- โฎ๏ธ ๐ โญ โถ๏ธ
๐ ๐ โ, โฎ๏ธ ๐ ๐ฐ ๐ฉบ, ๐ โ๏ธ ๐ฒ ๐โโ ๐ฝ ๐ ๐ Uvicorn, ๐โโ ๐ ๐ ๏ธ.
๐โ ๐ ๏ธ ๐ธ ๐ ๐ ๐ฒ ๐ โ๏ธ ๐งฌ ๐ ๏ธ โ ๐ ๐ ๐ & ๐ช ๐ต ๐ ๐จ.
๐ ๐ โฎ๏ธ ๐ ๐ ๐ ๏ธ ๐ง, ๐ค ๐ ๐ ๐ ๐ช โ๏ธ.
๐ฅ ๐ค ๐ ๐ฆ ๐ โ โ๏ธ ๐ โฎ๏ธ Uvicorn ๐จโ๐ญ ๐ ๏ธ.
Info
๐ฅ ๐ โ๏ธ ๐ฆ, ๐ผ โฎ๏ธ โ โ๏ธ Kubernetes, ๐ค ๐ ๐ฌ ๐ ๐ ๐ ๐ โญ ๐: FastAPI ๐ฆ - โ.
๐ฏ, ๐โ ๐ ๐ Kubernetes ๐ ๐ ๐ฒ ๐ซ ๐ โ๏ธ ๐ & โฉ๏ธ ๐ ๐ Uvicorn ๐ ๏ธ ๐ ๐ฆ, โ๏ธ ๐ค ๐ ๐ฌ ๐ ๐ โซ๏ธ โช ๐ ๐.
๐ โฎ๏ธ Uvicorn ๐จโ๐ญ¶
๐ โด๏ธ ๐ธ ๐ฝ โ๏ธ ๐จ๐ป ๐ฉ. ๐ โ ๐ ๐ ๐ช ๐ฆ ๐ธ ๐ ๐บ & โณ. ๐ โซ๏ธ ๐ซ ๐ โฎ๏ธ FastAPI, FastAPI โ๏ธ ๐ ๐ซ ๐ฉ.
โ๏ธ ๐ ๐โ๐ฆบ ๐ท ๐ ๏ธ ๐จโ๐ผ & ๐ค ๐ฉโ๐ป ๐ฌ โซ๏ธ โ ๐ฏ ๐จโ๐ญ ๐ ๏ธ ๐ โ๏ธ. โคด๏ธ ๐ ๐ โถ๏ธ 1๏ธโฃ โ๏ธ ๐ ๐จโ๐ญ ๐ ๏ธ โ๏ธ ๐ ๐.
& Uvicorn โ๏ธ ๐-๐ ๐จโ๐ญ ๐.
โ๏ธ ๐ ๐, ๐ ๐ ๐ซ ๐ ๏ธ ๐จโ๐ผ, ๐ ๐ โด & ๐ข. & โซ๏ธ ๐ ๐ถ ๐ป ๐จโ๐ญ ๐ ๏ธ ๐ Uvicorn ๐.
& โคด๏ธ ๐-๐ Uvicorn ๐จโ๐ญ ๐ ๐ ๐ ๐ญ ๐ ๐จ ๐ ๐ซ ๐ฉ FastAPI โ๏ธ โซ๏ธ.
โ ๐ & Uvicorn¶
$ pip install "uvicorn[standard]" gunicorn
---> 100%
๐ ๐ โ ๐ฏโโ๏ธ Uvicorn โฎ๏ธ standard
โ ๐ฆ (๐ค โ ๐ญ) & ๐.
๐ ๐ โฎ๏ธ Uvicorn ๐จโ๐ญ¶
โคด๏ธ ๐ ๐ช ๐ ๐ โฎ๏ธ:
$ gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:80
[19499] [INFO] Starting gunicorn 20.1.0
[19499] [INFO] Listening at: http://0.0.0.0:80 (19499)
[19499] [INFO] Using worker: uvicorn.workers.UvicornWorker
[19511] [INFO] Booting worker with pid: 19511
[19513] [INFO] Booting worker with pid: 19513
[19514] [INFO] Booting worker with pid: 19514
[19515] [INFO] Booting worker with pid: 19515
[19511] [INFO] Started server process [19511]
[19511] [INFO] Waiting for application startup.
[19511] [INFO] Application startup complete.
[19513] [INFO] Started server process [19513]
[19513] [INFO] Waiting for application startup.
[19513] [INFO] Application startup complete.
[19514] [INFO] Started server process [19514]
[19514] [INFO] Waiting for application startup.
[19514] [INFO] Application startup complete.
[19515] [INFO] Started server process [19515]
[19515] [INFO] Waiting for application startup.
[19515] [INFO] Application startup complete.
โก๏ธ ๐ โซ๏ธโ ๐ ๐ ๐ โ:
-
main:app
: ๐ ๐ โ โ๏ธ Uvicorn,main
โ ๐ ๐น ๐ "main
",, ๐main.py
. &app
๐ ๐ข ๐ FastAPI ๐ธ.-
๐ ๐ช ๐ ๐
main:app
๐ ๐import
๐ ๐:from main import app
-
, โค
main:app
๐ ๐ ๐import
๐from main import app
. --workers
: ๐ข ๐จโ๐ญ ๐ ๏ธ โ๏ธ, ๐ ๐ ๐ Uvicorn ๐จโ๐ญ, ๐ ๐ผ, 4๏ธโฃ ๐จโ๐ญ.--worker-class
: ๐-๐ ๐จโ๐ญ ๐ โ๏ธ ๐จโ๐ญ ๐ ๏ธ.-
๐ฅ ๐ฅ ๐ถโโ๏ธ ๐ ๐ ๐ ๐ช ๐ & โ๏ธ โฎ๏ธ:
import uvicorn.workers.UvicornWorker
-
-
--bind
: ๐ ๐ฌ ๐ ๐ข & โด ๐, โ๏ธ โค (:
) ๐ ๐ข & โด.- ๐ฅ ๐ ๐โโ Uvicorn ๐, โฉ๏ธ
--bind 0.0.0.0:80
(๐ ๐) ๐ ๐ โ๏ธ--host 0.0.0.0
&--port 80
.
- ๐ฅ ๐ ๐โโ Uvicorn ๐, โฉ๏ธ
๐ข, ๐ ๐ช ๐ ๐ โซ๏ธ ๐ฆ ๐น (๐ ๏ธ ๐) ๐ ๐ ๏ธ (โซ๏ธ ๐ข).
๐ ๐ช ๐ ๐:
- ๐ ๐ ๏ธ ๐จโ๐ผ โถ๏ธ โฎ๏ธ ๐น
19499
(๐ ๐ผ โซ๏ธ ๐ ๐ ๐ข). - โคด๏ธ โซ๏ธ โถ๏ธ
Listening at: http://0.0.0.0:80
. - โคด๏ธ โซ๏ธ ๐ ๐ โซ๏ธ โ๏ธ โ๏ธ ๐จโ๐ญ ๐
uvicorn.workers.UvicornWorker
. - & โคด๏ธ โซ๏ธ โถ๏ธ 4๏ธโฃ ๐จโ๐ญ, ๐ โฎ๏ธ ๐ฎ ๐ ๐น:
19511
,19513
,19514
, &19515
.
๐ ๐ โ ๐ ๐ ๏ธ โ ๏ธ ๐ ๏ธ & ๐ ๐ ๐ ๐ฅ ๐ ๐ง ๐ข ๐จโ๐ญ. ๐ โน ๐ โฎ๏ธ โ ๐ง โช๏ธโก๏ธ ๐ ๐.
๐, ๐ ๐ ๐ฒ ๐ โ๏ธ ๐ณ ๐ โ ๐ญ โ ๐ ๐ฅ ๐ช, & ๐ โซ๏ธ ๐ ๐ด, โ๏ธ.
Uvicorn โฎ๏ธ ๐จโ๐ญ¶
Uvicorn โ๏ธ ๐ โถ๏ธ & ๐ ๐ ๐จโ๐ญ ๐ ๏ธ.
๐, ๐, Uvicorn ๐ ๏ธ ๐ ๐จโ๐ญ ๐ ๏ธ ๐ ๐ ๐ ๐. , ๐ฅ ๐ ๐ โ๏ธ ๐ ๏ธ ๐จโ๐ผ ๐ ๐ (๐ ๐), โคด๏ธ โซ๏ธ ๐ช ๐ ๐ โฎ๏ธ ๐ ๐ ๏ธ ๐จโ๐ผ.
๐ ๐ผ, ๐ ๐ ๐ โซ๏ธ ๐ ๐:
$ uvicorn main:app --host 0.0.0.0 --port 8080 --workers 4
<font color="#A6E22E">INFO</font>: Uvicorn running on <b>http://0.0.0.0:8080</b> (Press CTRL+C to quit)
<font color="#A6E22E">INFO</font>: Started parent process [<font color="#A1EFE4"><b>27365</b></font>]
<font color="#A6E22E">INFO</font>: Started server process [<font color="#A1EFE4">27368</font>]
<font color="#A6E22E">INFO</font>: Waiting for application startup.
<font color="#A6E22E">INFO</font>: Application startup complete.
<font color="#A6E22E">INFO</font>: Started server process [<font color="#A1EFE4">27369</font>]
<font color="#A6E22E">INFO</font>: Waiting for application startup.
<font color="#A6E22E">INFO</font>: Application startup complete.
<font color="#A6E22E">INFO</font>: Started server process [<font color="#A1EFE4">27370</font>]
<font color="#A6E22E">INFO</font>: Waiting for application startup.
<font color="#A6E22E">INFO</font>: Application startup complete.
<font color="#A6E22E">INFO</font>: Started server process [<font color="#A1EFE4">27367</font>]
<font color="#A6E22E">INFO</font>: Waiting for application startup.
<font color="#A6E22E">INFO</font>: Application startup complete.
๐ด ๐ ๐ ๐ฅ --workers
๐ฌ Uvicorn โถ๏ธ 4๏ธโฃ ๐จโ๐ญ ๐ ๏ธ.
๐ ๐ช ๐ ๐ โซ๏ธ ๐ฆ ๐น ๐ ๐ ๏ธ, 27365
๐ช ๐ ๏ธ (๐ ๐ ๏ธ ๐จโ๐ผ) & 1๏ธโฃ ๐ ๐จโ๐ญ ๐ ๏ธ: 27368
, 27369
, 27370
, & 27367
.
๐ ๏ธ ๐ง¶
๐ฅ ๐ ๐ โ โ๏ธ ๐ (โ๏ธ Uvicorn) ๐ ๏ธ Uvicorn ๐จโ๐ญ ๐ ๏ธ ๐ ๐ ๏ธ ๐ธ, โ ๐ ๐ ๐ ๐ฝ, & ๐ช ๐ฆ ๐ ๐จ.
โช๏ธโก๏ธ ๐ ๐ ๏ธ ๐ง โช๏ธโก๏ธ ๐, โ๏ธ ๐จโ๐ญ ๐ โด๏ธ โน โฎ๏ธ ๐งฌ ๐, & ๐ฅ ๐ โฎ๏ธ โ, โ๏ธ ๐ ๐ช โ ๐ ๐:
- ๐โโ - ๐บ๐ธ๐
- ๐โโ ๐ ๐ด
- โ
- ๐งฌ (๐ข ๐ ๏ธ ๐)
- ๐พ
- โฎ๏ธ ๐ โญ โถ๏ธ
๐ฆ & โ¶
โญ ๐ ๐ FastAPI ๐ฆ - โ ๐ค ๐ ๐ฌ ๐ ๐ ๐ช โ๏ธ ๐ต ๐ ๐ ๏ธ ๐ง.
๐ค ๐ ๐ฆ ๐ ๐ โ ๐ผ ๐ ๐ ๐ โฎ๏ธ Uvicorn ๐จโ๐ญ & ๐ข ๐ณ ๐ ๐ช โ ๐ ๐ผ.
๐ค ๐ค ๐ ๐ฆ ๐ โ ๐ ๐ ๐ ๐ผ โช๏ธโก๏ธ ๐ ๐ ๐ Uvicorn ๐ ๏ธ (๐ต ๐). โซ๏ธ ๐ ๐ ๏ธ & ๐ฒ โซ๏ธโ ๐ ๐ ๐ ๐โ โ๏ธ ๐ ๐ฆ ๐งพ โ๏ธ ๐ Kubernetes.
๐¶
๐ ๐ช โ๏ธ ๐ (โ๏ธ Uvicorn) ๐ ๏ธ ๐จโ๐ผ โฎ๏ธ Uvicorn ๐จโ๐ญ โ ๐ ๐-๐ ๐ฝ, ๐ ๐ ๐ ๏ธ ๐.
๐ ๐ช โ๏ธ ๐ ๐งฐ & ๐ญ ๐ฅ ๐ โ ๐ ๐ ๐ ๐ ๏ธ โ๏ธ โช โ ๐ ๐ ๐ ๏ธ ๐ง ๐.
โ ๐ โญ ๐ ๐ก ๐ FastAPI โฎ๏ธ ๐ฆ (โ โ & Kubernetes). ๐ ๐ ๐ ๐ ๐ ๐งฐ โ๏ธ ๐ ๐ โ ๐ ๐ ๏ธ ๐ง ๐. ๐ถ