使用FastAPI建立高效能、非同步的網路應用程式
隨著網路的快速發展,Web應用程式的效能和效率成為使用者關注的重點之一。傳統的Web框架在處理大量請求時往往效率低下,無法滿足高並發的需求。為了提高Web應用的效能和效率,FastAPI應運而生。
FastAPI是一個基於Python的現代化Web框架,它既能保持簡單易用性,又能提供出色的效能。 FastAPI採用非同步程式模式,利用Python的協程和非同步IO機制,使得應用程式可以有效率地處理大量並發請求。以下將介紹如何使用FastAPI建構一個高效能、非同步的Web應用。
首先,需要使用pip指令安裝FastAPI:
pip install fastapi
接下來,建立一個Python文件,例如main.py,然後編寫以下程式碼:
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello, World!"}
上述程式碼建立了一個FastAPI應用,並定義了一個GET請求路由,「/」表示根目錄。當存取根目錄時,將傳回一個包含"Hello, World!"的JSON回應。
用uvicorn運行FastAPI應用程式:
uvicorn main:app --reload
現在,FastAPI應用程式已經運行起來了。開啟瀏覽器,造訪http://localhost:8000,即可看到"Hello, World!"的回應。
FastAPI支援使用非同步處理函數來處理請求。以下是一個使用非同步處理函數的範例:
from fastapi import FastAPI import asyncio app = FastAPI() async def background_task(): while True: print("Running background task...") await asyncio.sleep(1) @app.get("/") async def root(): asyncio.create_task(background_task()) return {"message": "Hello, World!"}
上述程式碼中,我們定義了一個非同步任務background_task(),它每秒都會列印一句"Running background task..."。在根路由"/"的處理函數中,我們使用asyncio.create_task()來建立一個後台任務。這樣,當存取根目錄時,將同時啟動background_task()的執行。
FastAPI支援透過URL路徑參數、查詢參數、請求體等方式傳遞參數,非常靈活。以下是使用URL路徑參數和查詢參數的範例:
from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}
上述程式碼中,我們定義了一個帶有路徑參數item_id和查詢參數q的GET請求路由。當存取例如/items/42?q=test時,會傳回以下回應:
{ "item_id": 42, "q": "test" }
FastAPI天生支援非同步操作,可以方便地與異步資料庫互動。以下是一個使用非同步資料庫操作的範例:
from fastapi import FastAPI from databases import Database app = FastAPI() database = Database("sqlite:///test.db") @app.on_event("startup") async def startup(): await database.connect() @app.on_event("shutdown") async def shutdown(): await database.disconnect() @app.get("/") async def root(): query = "SELECT * FROM items" items = await database.fetch_all(query) return {"items": items}
在上述程式碼中,我們使用databases函式庫建立了一個SQLite資料庫連線並在應用程式啟動和關閉時進行連線和斷開操作。在根路由的處理函數中,我們執行了一個SELECT查詢並傳回結果。
使用工具如uvicorn、Gunicorn等可以將FastAPI應用程式部署到生產環境。例如使用Gunicorn部署FastAPI應用程式:
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
上述指令將啟動4個程序並使用UvicornWorker來處理請求。
總結
FastAPI是一個非常強大的現代化Web框架,它能幫助我們建立高效能、非同步的網路應用程式。透過利用Python的非同步程式設計特性,我們可以輕鬆地處理大量並發請求,並實現高效的資料庫操作。無論是開發個人專案還是建立企業級應用,FastAPI都是一個值得嘗試的選擇。
以上是使用FastAPI建立高效能、非同步的網路應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!