Sync fastapi docs from 7cb06f36 on 2026-07-11

This commit is contained in:
The Librarian
2026-07-11 04:00:12 +00:00
parent 2c5483ee1c
commit d71a936809
1032 changed files with 12357 additions and 6438 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ FastAPI Cloud 是 *FastAPI and friends* 開源專案的主要贊助與資金提
## 雲端供應商 - 贊助商 { #cloud-providers-sponsors }
其他一些雲端供應商也會 ✨ [**贊助 FastAPI**](../help-fastapi.md#sponsor-the-author) ✨。🙇
其他一些雲端供應商也會 ✨ [**贊助 FastAPI**](https://github.com/sponsors/tiangolo) ✨。🙇
你也可以參考他們的指南並試用其服務:
+1
View File
@@ -1,5 +1,6 @@
# 部署概念 { #deployments-concepts }
當你要部署一個 FastAPI 應用,或其實任何類型的 Web API 時,有幾個你可能在意的概念。掌握這些概念後,你就能找出最適合部署你應用的方式。
一些重要的概念包括:
+5 -5
View File
@@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
</div>
/// info | 資訊
/// note | 注意
還有其他格式與工具可以用來定義與安裝套件相依。
@@ -258,7 +258,7 @@ CMD fastapi run app/main.py --port 80
你可以在 [Docker 關於 shell 與 exec 形式的文件](https://docs.docker.com/reference/dockerfile/#shell-and-exec-form) 閱讀更多。
使用 `docker compose` 時這會特別明顯。技術細節請見這段 Docker Compose 常見問題:[為什麼我的服務要花 10 秒才重新建立或停止?](https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop)
使用 `docker compose` 時這會特別明顯。技術細節請見這段 Docker Compose 常見問題:[為什麼我的服務要花 10 秒才重新建立或停止?](https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop)
#### 目錄結構 { #directory-structure }
@@ -454,7 +454,7 @@ Traefik 與 Docker、Kubernetes 等整合良好,因此為你的容器設定與
## 複本 - 行程數量 { #replication-number-of-processes }
如果你在有 Kubernetes、Docker Swarm Mode、Nomad,或其他類似的分散式容器管理系統的「<dfn title="一組配置為連接並共同運作的機器">叢集</dfn>」上運作,那你大概會希望在「叢集層級」處理「複本」,而不是在每個容器內使用「行程管理器」(例如帶有 workers 的 Uvicorn)。
如果你在有 Kubernetes、Docker Swarm Mode、Nomad,或其他類似的分散式容器管理系統的「<dfn title="一組被設定為以某種方式連接並共同運作的機器">叢集</dfn>」上運作,那你大概會希望在「叢集層級」處理「複本」,而不是在每個容器內使用「行程管理器」(例如帶有 workers 的 Uvicorn)。
像 Kubernetes 這類的分散式容器管理系統,通常內建處理「容器複本」以及支援進入請求的「負載平衡」的能力——全部都在「叢集層級」。
@@ -556,7 +556,7 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80", "--workers", "4"]
如果你有「多個容器」,且每個容器大概都只執行「單一行程」(例如在一個 Kubernetes 叢集中),那你可能會想要一個「獨立的容器」來完成「前置步驟」的工作,並只在單一容器、單一行程中執行,接著才啟動多個複本的工作容器。
/// info | 資訊
/// note | 注意
如果你使用 Kubernetes,這大概會是一個 [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/)。
@@ -574,7 +574,7 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80", "--workers", "4"]
你大概「不應該」使用這個基底 Docker 映像(或其他類似的)。
如果你使用 Kubernetes(或其他)並已在叢集層級設定「複本」、使用多個「容器」。在這些情況下,更好的做法是如上所述[從零建置映像](#build-a-docker-image-for-fastapi)。
如果你使用 Kubernetes(或其他)並已在叢集層級設定「複本」、使用多個「容器」。在這些情況下,更好的做法是如上所述從零建置映像」:[為 FastAPI 建置 Docker 映像](#build-a-docker-image-for-fastapi)。
若你需要多個 workers,只要使用 `--workers` 命令列選項即可。
+3 -21
View File
@@ -1,26 +1,6 @@
# FastAPI Cloud { #fastapi-cloud }
你可以用「一行指令」把你的 FastAPI 應用程式部署到 [FastAPI Cloud](https://fastapicloud.com)。如果你還沒加入,快去登記等候名單吧!🚀
## 登入 { #login }
請先確認你已經有 **FastAPI Cloud** 帳號(我們已從等候名單邀請你 😉)。
然後登入:
<div class="termy">
```console
$ fastapi login
You are logged in to FastAPI Cloud 🚀
```
</div>
## 部署 { #deploy }
現在用「一行指令」部署你的應用:
你可以只用 **一個指令**把你的 FastAPI 應用程式部署到 [FastAPI Cloud](https://fastapicloud.com)。🚀
<div class="termy">
@@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
</div>
CLI 會自動偵測你的 FastAPI 應用並將其部署到雲端。若你尚未登入,瀏覽器會自動開啟以完成驗證流程。
就這樣!現在你可以透過該 URL 造訪你的應用。✨
## 關於 FastAPI Cloud { #about-fastapi-cloud }
+1
View File
@@ -1,5 +1,6 @@
# 關於 HTTPS { #about-https }
人們很容易以為 HTTPS 只是「啟用或未啟用」的功能。
但實際上複雜得多。
+6 -7
View File
@@ -40,7 +40,7 @@ $ <font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:solid
這在多數情況下都適用。😎
你可以用這個指令在容器、伺服器等環境中啟動你的 FastAPI 應用。
你可以用這個指令在容器、伺服器等環境中啟動你的 **FastAPI** 應用。
## ASGI 伺服器 { #asgi-servers }
@@ -48,7 +48,7 @@ $ <font color="#4E9A06">fastapi</font> run <u style="text-decoration-style:solid
FastAPI 採用建立 Python 網頁框架與伺服器的標準 <abbr title="Asynchronous Server Gateway Interface - 非同步伺服器閘道介面">ASGI</abbr>。FastAPI 是一個 ASGI 網頁框架。
在遠端伺服器機器上執行 FastAPI 應用(或任何 ASGI 應用)所需的關鍵是 ASGI 伺服器程式,例如 Uvicorn`fastapi` 指令預設就是使用它。
在遠端伺服器機器上執行 **FastAPI** 應用(或任何 ASGI 應用)所需的關鍵是 ASGI 伺服器程式,例如 **Uvicorn**`fastapi` 指令預設就是使用它。
有數個替代方案,包括:
@@ -56,17 +56,16 @@ FastAPI 採用建立 Python 網頁框架與伺服器的標準 <abbr title="Async
* [Hypercorn](https://hypercorn.readthedocs.io/):支援 HTTP/2 與 Trio 等功能的 ASGI 伺服器。
* [Daphne](https://github.com/django/daphne):為 Django Channels 打造的 ASGI 伺服器。
* [Granian](https://github.com/emmett-framework/granian):針對 Python 應用的 Rust HTTP 伺服器。
* [NGINX Unit](https://unit.nginx.org/howto/fastapi/)NGINX Unit 是輕量且多功能的網頁應用執行環境。
## 伺服器機器與伺服器程式 { #server-machine-and-server-program }
有個命名上的小細節請留意。💡
「server(伺服器)」一詞常同時用來指遠端/雲端電腦(實體或虛擬機器),也用來指在該機器上執行的程式(例如 Uvicorn)。
**server**(伺服器)」一詞常同時用來指遠端/雲端電腦(實體或虛擬機器),也用來指在該機器上執行的程式(例如 Uvicorn)。
因此看到「server」時,文意可能指這兩者之一。
指涉遠端機器時,常稱為 server、machine、VM(虛擬機器)、node 等,這些都指某種遠端機器(通常執行 Linux),你會在其上執行程式。
指涉遠端機器時,常稱為 **server**、**machine**、**VM**(虛擬機器)、**node** 等,這些都指某種遠端機器(通常執行 Linux),你會在其上執行程式。
## 安裝伺服器程式 { #install-the-server-program }
@@ -137,13 +136,13 @@ Uvicorn 與其他伺服器支援 `--reload` 選項,對開發期間很有幫助
`--reload` 會消耗更多資源,也較不穩定等。
它在開發階段很實用,但在生產環境中不應使用。
它在 **開發** 階段很實用,但在 **生產環境** 中**不應**使用。
///
## 部署觀念 { #deployment-concepts }
上述範例會啟動伺服器程式(如 Uvicorn),以單一行程在指定連接埠(如 `80`)上監聽所有 IP`0.0.0.0`)。
上述範例會啟動伺服器程式(如 Uvicorn),以**單一行程**在指定連接埠(如 `80`)上監聽所有 IP`0.0.0.0`)。
這是基本概念。但你很可能還需要處理一些額外事項,例如:
@@ -17,7 +17,7 @@
這裡會示範如何使用 `fastapi` 指令或直接使用 `uvicorn` 指令,搭配 Uvicorn 的工作處理序(worker processes)。
/// info
/// note
如果你使用容器(例如 Docker 或 Kubernetes),我會在下一章說明更多:[容器中的 FastAPI - Docker](docker.md)。