From 2a5cc5fff38fad76969bde0a630952d8ac174496 Mon Sep 17 00:00:00 2001
From: Yusuke Tamura <62091034+tamtam-fitness@users.noreply.github.com>
Date: Mon, 14 Aug 2023 18:13:28 +0900
Subject: [PATCH] =?utf8?q?=F0=9F=8C=90=20Add=20Japanese=20translation=20fo?=
=?utf8?q?r=20`docs/ja/docs/deployment/server-workers.md`=20(#10064)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
---
docs/ja/docs/deployment/server-workers.md | 182 ++++++++++++++++++++++
1 file changed, 182 insertions(+)
create mode 100644 docs/ja/docs/deployment/server-workers.md
diff --git a/docs/ja/docs/deployment/server-workers.md b/docs/ja/docs/deployment/server-workers.md
new file mode 100644
index 0000000000..e1ea165a2c
--- /dev/null
+++ b/docs/ja/docs/deployment/server-workers.md
@@ -0,0 +1,182 @@
+# Server Workers - Gunicorn 㨠Uvicorn
+
+ååã®ãããã¤ã¡ã³ãã®ã³ã³ã»ãããæ¯ãè¿ã£ã¦ã¿ã¾ãããï¼
+
+* ã»ãã¥ãªã㣠- HTTPS
+* èµ·åæã®å®è¡
+* åèµ·å
+* **ã¬ããªã±ã¼ã·ã§ã³ï¼å®è¡ä¸ã®ããã»ã¹æ°ï¼**
+* ã¡ã¢ãª
+* éå§åã®äºåã¹ããã
+
+ããã¾ã§ã®ããã¥ã¡ã³ãã®ãã¥ã¼ããªã¢ã«ã§ã¯ãããããUvicornã®ãããª**ãµã¼ãã¼ããã°ã©ã **ã**åä¸ã®ããã»ã¹**ã§å®è¡ãã¦ãã¾ãã
+
+ã¢ããªã±ã¼ã·ã§ã³ããããã¤ããéã«ã¯ã**è¤æ°ã®ã³ã¢**ãå©ç¨ããããã¦ããå¤ãã®ãªã¯ã¨ã¹ããå¦çã§ããããã«ããããã«ãããã»ã¹ã®**ã¬ããªã±ã¼ã·ã§ã³**ãæã¤ãã¨ãæãã§ãããã
+
+åã®ãã£ãã¿ã¼ã§ãã[ãããã¤ã¡ã³ãã®ã³ã³ã»ãã](./concepts.md){.internal-link target=_blank}ã«ã¦è¦ã¦ããããã«ãæå¹ãªæ¦ç¥ãããã¤ãããã¾ãã
+
+ããã§ã¯**Gunicorn**ã**Uvicornã®ã¯ã¼ã«ã¼ã»ããã»ã¹**ã管çããå ´åã®ä½¿ãæ¹ã«ã¤ãã¦ç´¹ä»ãã¦ããã¾ãã
+
+!!! info
+
+ DockerãKubernetesãªã©ã®ã³ã³ããã使ç¨ãã¦ããå ´åã¯ã次ã®ç« ã§è©³ãã説æãã¾ãï¼ [ã³ã³ããå
ã®FastAPI - Docker](./docker.md){.internal-link target=_blank}
+
+ ç¹ã«**Kubernetes**ä¸ã§å®è¡ããå ´åã¯ããããã**Gunicornã使ç¨ãã**ã**ã³ã³ãããã¨ã«åä¸ã®Uvicornããã»ã¹**ãå®è¡ãããã¨ã«ãªãã¾ãããããã«ã¤ãã¦ã¯ãã®ç« ã®å¾åã§èª¬æãã¾ãã
+
+## Gunicornã«ããUvicornã®ã¯ã¼ã«ã¼ã»ããã»ã¹ã®ç®¡ç
+
+**Gunicorn**ã¯**WSGIæ¨æº**ã®ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ã§ãããã®ãã¨ã¯ãGunicornã¯FlaskãDjangoã®ãããªã¢ããªã±ã¼ã·ã§ã³ã«ãµã¼ãã¹ãæä¾ã§ãããã¨ãæå³ãã¾ããGunicornããèªä½ã¯**FastAPI**ã¨äºææ§ããªãã§ãããã¨ããã®ãFastAPIã¯ææ°ã®**ASGI æ¨æº**ã使ç¨ãã¦ããããã§ãã
+
+ããããGunicornã¯**ããã»ã¹ããã¼ã¸ã£ã¼**ã¨ãã¦åä½ããã¦ã¼ã¶ã¼ãç¹å®ã®**ã¯ã¼ã«ã¼ã»ããã»ã¹ã¯ã©ã¹**ã使ç¨ããããã«æç¤ºãããã¨ãã§ãã¾ããããã¨Gunicornã¯ãã®ã¯ã©ã¹ã使ã1ã¤ä»¥ä¸ã®**ã¯ã¼ã«ã¼ã»ããã»ã¹**ãéå§ãã¾ãã
+
+ããã¦**Uvicorn**ã«ã¯**Gunicornäºæã®ã¯ã¼ã«ã¼ã¯ã©ã¹**ãããã¾ãã
+
+ãã®çµã¿åããã§ãGunicornã¯**ããã»ã¹ããã¼ã¸ã£ã¼**ã¨ãã¦åä½ãã**ãã¼ã**ã¨**IP**ããªãã¹ã³ãã¾ããããã¦ã**Uvicornã¯ã©ã¹**ãå®è¡ãã¦ããã¯ã¼ã«ã¼ã»ããã»ã¹ã«éä¿¡ã**転é**ãã¾ãã
+
+ããã¦ãGunicornäºæã®**Uvicornã¯ã¼ã«ã¼**ã¯ã©ã¹ããFastAPIã使ããããã«ãGunicornããéããã¦ãããã¼ã¿ãASGIæ¨æºã«å¤æããå½¹å²ãæ
ãã¾ãã
+
+## Gunicornã¨Uvicornãã¤ã³ã¹ãã¼ã«ãã
+
+
+
+```console
+$ pip install "uvicorn[standard]" gunicorn
+
+---> 100%
+```
+
+
+
+ããã«ããUvicornã¨ï¼é«æ§è½ãå¾ãããã®ï¼æ¨æºï¼`standard`ï¼ã®è¿½å ããã±ã¼ã¸ã¨Gunicornã®ä¸¡æ¹ãã¤ã³ã¹ãã¼ã«ããã¾ãã
+
+## Uvicornã®ã¯ã¼ã«ã¼ã¨ã¨ãã«Gunicornãå®è¡ãã
+
+Gunicornã以ä¸ã®ããã«èµ·åããããã¨ãã§ãã¾ã:
+
+
+
+```console
+$ 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`ï¼ `main`ã¯"`main`"ã¨ããååã®Pythonã¢ã¸ã¥ã¼ã«ãã¤ã¾ããã¡ã¤ã«`main.py`ãæå³ãã¾ãããã㦠`app` 㯠**FastAPI** ã¢ããªã±ã¼ã·ã§ã³ã®å¤æ°åã§ãã
+ * main:app`ã¯Pythonã®`import`æã¨åããããªãã®ã ã¨æ³åã§ãã¾ãï¼
+
+ ```Python
+ from main import app
+ ```
+
+ * ã¤ã¾ãã`main:app`ã®ã³ãã³ã¯ã`from main import app`ã®Pythonã®`import`ã®é¨åã¨åãã«ãªãã¾ãã
+
+* `--workers`ï¼ ä½¿ç¨ããã¯ã¼ã«ã¼ã»ããã»ã¹ã®æ°ã§ããããããUvicornã®ã¯ã¼ã«ã¼ãå®è¡ãã¾ãã
+
+* `--worker-class`ï¼ ã¯ã¼ã«ã¼ã»ããã»ã¹ã§ä½¿ç¨ããGunicornäºæã®ã¯ã¼ã«ã¼ã¯ã©ã¹ã§ãã
+ * ããã§ã¯Gunicornãã¤ã³ãã¼ããã¦ä½¿ç¨ã§ããã¯ã©ã¹ã渡ãã¾ãï¼
+
+ ```Python
+ import uvicorn.workers.UvicornWorker
+ ```
+
+* `--bind`ï¼ Gunicornã«ãªãã¹ã³ããIPã¨ãã¼ããä¼ãã¾ããã³ãã³(`:`)ã§IPã¨ãã¼ããåºåãã¾ãã
+ * Uvicornãç´æ¥å®è¡ãã¦ããå ´åã¯ã`--bind 0.0.0.0:80` ï¼Gunicornã®ãªãã·ã§ã³ï¼ã®ä»£ããã«ã`--host 0.0.0.0`㨠`--port 80`ã使ãã¾ãã
+
+åºåã§ã¯ãåããã»ã¹ã®**PID**ï¼ããã»ã¹IDï¼ã表示ããã¦ããã®ããããã¾ãï¼åãªãæ°åã§ãï¼ã
+
+以ä¸ã®éãã§ãï¼
+
+* Gunicornã®**ããã»ã¹ã»ããã¼ã¸ã£ã¼**ã¯PID `19499`ï¼ããªãã®å ´åã¯éãçªå·ã§ãããï¼ã§å§ã¾ãã¾ãã
+* 次ã«ã`Listening at: http://0.0.0.0:80`ãéå§ãã¾ãã
+* ãããã `uvicorn.workers.UvicornWorker` ã§ã¯ã¼ã«ã¼ã¯ã©ã¹ã使ç¨ãããã¨ãæ¤åºãã¾ãã
+* ããã¦ã**4ã¤ã®ã¯ã¼ã«ã¼**ãèµ·åãã¾ããããããã®ã¯ã¼ã«ã¼ã®PIDã¯ã`19511`ã`19513`ã`19514`ã`19515`ã§ãã
+
+Gunicornã¯ã¾ããã¯ã¼ã«ã¼ã®æ°ãç¶æããããã«å¿
è¦ã§ããã°ã**ãã¦ã³ããããã»ã¹**ã管çãã**æ°ããããã»ã¹ã**åèµ·å**ããã¾ãããã®ãããä¸è¨ã®ãªã¹ãã«ãã**åèµ·å**ã®æ¦å¿µã«ä¸é¨å½¹ç«ã¡ã¾ãã
+
+ããããªãããå¿
è¦ã§ããã°Gunicornã**åèµ·å**ããã**èµ·åæã«å®è¡**ããããªã©ãå¤é¨ã®ã³ã³ãã¼ãã³ããæããããã¨ãå¿
è¦ããããã¾ããã
+
+## Uvicornã¨ã¯ã¼ã«ã¼
+
+Uvicornã«ã¯è¤æ°ã®**ã¯ã¼ã«ã¼ã»ããã»ã¹**ãèµ·åãå®è¡ãããªãã·ã§ã³ãããã¾ãã
+
+ã¨ã¯ãããã®ã®ãä»ã®ã¨ããUvicornã®ã¯ã¼ã«ã¼ã»ããã»ã¹ãæ±ãæ©è½ã¯Gunicornãããå¶éããã¦ãã¾ãããã®ããããã®ã¬ãã«ï¼Pythonã¬ãã«ï¼ã§ããã»ã¹ããã¼ã¸ã£ã¼ãæã¡ããã®ã§ããã°ãGunicornãããã»ã¹ããã¼ã¸ã£ã¼ã¨ãã¦ä½¿ã£ã¦ã¿ãæ¹ãè³¢æãããããªãã§ãã
+
+ã©ããªå ´åã§ããã以ä¸ã®ããã«å®è¡ãã¾ãï¼
+
+
+
+```console
+$ uvicorn main:app --host 0.0.0.0 --port 8080 --workers 4
+INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
+INFO: Started parent process [27365]
+INFO: Started server process [27368]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+INFO: Started server process [27369]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+INFO: Started server process [27370]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+INFO: Started server process [27367]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+```
+
+
+
+ããã§å¯ä¸ã®æ°ãããªãã·ã§ã³ã¯ `--workers` ã§ãUvicornã«4ã¤ã®ã¯ã¼ã«ã¼ã»ããã»ã¹ãèµ·åããããã«æç¤ºãã¦ãã¾ãã
+
+åããã»ã¹ã® **PID** ã表示ããã親ããã»ã¹ã® `27365` (ãã㯠**ããã»ã¹ããã¼ã¸ã£**) ã¨ãåã¯ã¼ã«ã¼ã»ããã»ã¹ã® **PID** ã表示ããã¾ãï¼ `27368`ã`27369`ã`27370`ã`27367`ã«ãªãã¾ãã
+
+## ãããã¤ã¡ã³ãã®ã³ã³ã»ãã
+
+ããã§ã¯ãã¢ããªã±ã¼ã·ã§ã³ã®å®è¡ã**並åå**ããCPUã®**ãã«ãã³ã¢**ãæ´»ç¨ãã**ããå¤ãã®ãªã¯ã¨ã¹ã**ã«å¯¾å¿ã§ããããã«ããããã«ã**Gunicorn**ï¼ã¾ãã¯Uvicornï¼ã使ç¨ãã¦**Uvicornã¯ã¼ã«ã¼ã»ããã»ã¹**ã管çããæ¹æ³ãè¦ã¦ããã¾ããã
+
+ä¸è¨ã®ãããã¤ã®ã³ã³ã»ããã®ãªã¹ããããã¯ã¼ã«ã¼ã使ããã¨ã¯ä¸»ã«**ã¬ããªã±ã¼ã·ã§ã³**ã®é¨åã¨ã**åèµ·å**ãå°ãå©ãã¦ããã¾ãï¼
+
+* ã»ãã¥ãªã㣠- HTTPS
+* èµ·åæã®å®è¡
+* åèµ·å
+* ã¬ããªã±ã¼ã·ã§ã³ï¼å®è¡ä¸ã®ããã»ã¹æ°ï¼
+* ã¡ã¢ãªã¼
+* éå§åã®äºåã®ã¹ããã
+
+
+## ã³ã³ããã¨Docker
+
+æ¬¡ç« ã®[ã³ã³ããå
ã®FastAPI - Docker](./docker.md){.internal-link target=_blank}ã§ã¯ããã®ä»ã®**ãããã¤ã®ã³ã³ã»ãã**ãæ±ãããã«å®æ½ããã§ãããæ¦ç¥ãããã¤ãç´¹ä»ãã¾ãã
+
+ã¾ãã**Gunicornã¨Uvicornã¯ã¼ã«ã¼**ãå«ã**å
¬å¼Dockerã¤ã¡ã¼ã¸**ã¨ãç°¡åãªã±ã¼ã¹ã«å½¹ç«ã¤ããã¤ãã®ããã©ã«ãè¨å®ãç´¹ä»ãã¾ãã
+
+ã¾ãã(Gunicornã使ããã«)Uvicornããã»ã¹ã1ã¤ã ãå®è¡ããããã«ã**ã¼ãããç¬èªã®ã¤ã¡ã¼ã¸ã**æ§ç¯ããæ¹æ³ãç´¹ä»ãã¾ããããã¯ç°¡åãªããã»ã¹ã§ããããã**Kubernetes**ã®ãããªåæ£ã³ã³ãã管çã·ã¹ãã ã使ãã¨ãã«ãããããã¨ã§ãããã
+
+## ã¾ã¨ã
+
+Uvicornã¯ã¼ã«ã¼ã使ã£ãããã»ã¹ããã¼ã¸ã£ã¨ãã¦**Gunicorn**ï¼ã¾ãã¯Uvicornï¼ã使ãã°ã**ãã«ãã³ã¢CPU**ãæ´»ç¨ãã¦**è¤æ°ã®ããã»ã¹ã並åå®è¡**ã§ãã¾ãã
+
+ãããã®ãã¼ã«ãã¢ã¤ãã¢ã¯ã**ããªãèªèº«ã®ãããã¤ã·ã¹ãã **ãã»ããã¢ããããªãããä»ã®ãããã¤ã³ã³ã»ãããèªåã§è¡ãå ´åã«ã使ãã¾ãã
+
+次ã®ç« ã§ã¯ãã³ã³ããï¼DockerãKubernetesãªã©ï¼ã使ã£ã**FastAPI**ã«ã¤ãã¦å¦ãã§ããã¾ãããããããã®ãã¼ã«ã«ã¯ãä»ã®**ãããã¤ã®ã³ã³ã»ãã**ã解決ããç°¡åãªæ¹æ³ããããã¨ããããã§ããããâ¨
--
2.47.3