介紹
當開發Python應用程式時,FastAPI是一個建造高性能解決方案的頂尖選擇。它提供了快速的效能、簡單易用的特點,以及對異步程式設計的支持,使其成為開發現代可擴展應用程式的理想選擇。
在這個教程中,我們將引導您完成設定一個與NoSQL数据库搭配的FastAPI應用程式的過程。對於存儲和管理數據來說,NoSQL数据库提供了靈活性和可擴展性,使它們成為需要處理多樣且複雜數據結構的應用程式的最佳選擇。
前提
在開始之前,您需要確保您已經準備好以下內容:
-
一台運行Ubuntu的伺服器,以及一個具有sudo權限的非root用戶和一個活躍的防火牆。如需指導如何設定,請從這個列表中選擇您的的分發版,並遵循我們的初始伺服器設定指南。請確保使用受支持的版本的Ubuntu。
-
熟悉 Linux 命令行。若要了解或重温命令行的基础知识,您可以閱讀此篇關於 Linux 命令行初学者指南 的文章。
-
在 Ubuntu 終端機中運行
sudo apt-get update
,以確保系統已經有最新版本及安全性更新,這些更新來自於您系統上配置的存儲庫中的軟體。
這些指示僅適用於最新的 Ubuntu 版本:Ubuntu 24.04、Ubuntu 22.04 和 Ubuntu 20.04。如果您正在使用 Ubuntu 版本 <= 18.04,我們建議您升至更新的版本,因為 Ubuntu 不再為這些版本提供支持。這份指南將幫助您升级 Ubuntu 版本。
步驟 1 – 在您的電腦上設定 Python 環境
在這個教學中,我們將使用 python3
套件來執行命令。最新的 Ubuntu 版本已經 Include Python 3 installation,所以要檢查其安裝,請運行以下命令:
如果這返回錯誤,您可以運行以下命令來安裝/重新安裝套件:
接下來,您需要 install the pip
套件以安裝 Python 套件及其依賴,並以安全的方式進行。
步驟 2 – 建立虛擬環境
如果您正在使用 Ubuntu 版本 < 24.04,您不需要建立虛擬環境,但隔離您项目的依賴是一個好習慣。
從 Python 3.11 和 pip 22.3 開始,有一個新的 PEP 668 指出了將 Python 基礎環境標記為「外部管理」的规定,這意味著除非您在虛擬環境內工作,否則您將無法使用 pip
成功地安裝套件。
在這個步驟中,您將為您的項目創建一個虛擬環境,該環境將隔離您項目的依賴關係,以避免不同套件版本之間潛在的衝突。在終端機中運行以下命令集:
這將安裝創建虛擬環境所需的必要 venv
套件。
此命令将在您的工作目錄內創建一個名稱為 fastapi-env
的虛擬環境。要開始在此環境內工作,您需要激活它。
成功執行後,您將看到終端機提示符前面有这样的前缀:
(fastapi-env) user@machine:~$
現在,您可以開始在此虛擬環境內安裝所需的依賴。
步驟 3 – 安装必要的庫和套件
在這個步驟中,您將安裝幾個必要的套件和庫,這些是成功跟從本教程所需要的。
我們先安裝 fastapi
,這是建立 FastAPI 應用程式的必要套件,以及 uvicorn
,這是運行 FastAPI 應用程式的必要套件。
在這個教學中,我們將使用 MongoDB 作為 NoSQL 資料庫。為了從 FastAPI 內與 MongoDB 互動,您需要安裝 motor
,這是 MongoDB 的一個異步 Python 驅動程式。
步驟 4 – 在 Ubuntu 上安裝和設定 MongoDB
要在您的 Ubuntu 系統上安裝 MongoDB,請在終端機中執行以下命令集合:
執行成功後,這將回傳 echo 參數。接下來, quickly 進行以下操作:
這將確保在設定 MongoDB 金鑰後取得最新的更新。
接下來,您需要在系統上安裝一個 openssl
依賴,這是 MongoDB 安裝的必要條件。
執行後,系統會要求您重新啟動服務。重启後,使用以下命令安裝 MongoDB:
啟動並啟用 MongoDB 服務:
您可以通過執行以下命令來檢查 MongoDB 服務狀態並測試連接:
步驟 5 – 創建 FastAPI 應用程式
接下來的步驟是創建一個 FastAPI 應用程式。在您的工作目錄中,創建一個 database.py
文件:
這會開啟一個空的文字編輯器。在這裡寫下您的數據庫連接邏輯。
假設 mycollection
of mydatabase
已經有了一些數據,現在您創建一個 main.py
文件,該文件包含了您的應用程式的邏輯。在以下的 FastAPI 應用中,使用 database.py
建立了數據庫連接,並定義了用於 AI 預測的路由。透過這些路由,輸入被驗證。
在文字編輯器中,寫下邏輯:
以下是這個應用程式所做的 breakdown:
- 從 sklearn 取得的線性回歸模型:這個模型根據一個輸入特徵來預測輸出。
- InputData 從 Pydantic Model 來: 這定義了預測端點预期的輸入結構。在這個情況中,它是
float
。 - MongoDB 路由: 路由
/items/
和POST /items/
允許您從您的 MongoDB 收集中考量和插入項目。
步驟 6 – 運行 FastAPI 應用程序
要成功地運行這個應用程序,您需要安裝應用程序中使用的庫和包。
現在,使用以下命令來運行這個應用程序:
這個命令的輸出將是:
OutputINFO: Will watch for changes in these directories: ['/path/to/your/project']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [XXXXX] using statreload
INFO: Started server process [XXXXX]
INFO: Waiting for application startup.
INFO: Application startup complete.
FastAPI 自動生成了使用 Swagger UI 的互動式 API 文档。您可以通過訪問 http://127.0.0.1:8000/docs
來獲得它。
您可以使用像 curl
或 Postman 這樣的工具來調用基於您輸入的值進行預測的端點。
curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'
步驟 7 [選擇性] – 使用 Docker Compose 運行應用程序
您可以使用 docker-compose
來集装箱化您的應用程序並運行它。通過將您的應用程序集装箱化,可以簡化部署過程,使應用程序更容易部署、擴展和維護。要將您的應用程序定義為 Dockerfile,請遵循 使用 Docker Compose 部署 FastAPI 應用程序 文章中提到的步驟。
結論
在本次教學中,您學習了如何成功地設置一個與 MongoDB 相關的 FastAPI 應用程序,創建了一個簡單的基於 AI 的應用程序,能夠存儲和取回輸入預測。
FastAPI 和 NoSQL 數據庫的結合為建立和擴展基於 AI 的應用程序提供了強大而靈活的環境。
Source:
https://www.digitalocean.com/community/tutorials/set-up-fastapi-app-with-nosql-db