跳转到内容
搜索文档

FastAPI

最后更新 查看 MarkdownAgent 设置

FastAPI 包在 Python Workers 中受支持。

FastAPI 应用程序使用称为异步服务器网关接口(ASGI) ↗的协议。这意味着 FastAPI 本身从不从 socket 读取或写入。ASGI 应用程序期望连接到 ASGI 服务器,通常是 uvicorn ↗。 ASGI 服务器代表应用程序处理所有原始 socket。

Python Workers 提供一个 ASGI 服务器 ↗,你可以直接在 Python Worker 中使用,这让你可以在 Python Workers 中使用 FastAPI。

快速入门

克隆 cloudflare/python-workers-examples 仓库并运行 FastAPI 示例:

git clone https://github.com/cloudflare/python-workers-examples
cd python-workers-examples/03-fastapi
uv run pywrangler dev

示例代码

from workers import WorkerEntrypoint
from fastapi import FastAPI, Request
from pydantic import BaseModel
import asgi

class Default(WorkerEntrypoint):
    async def fetch(self, request):
        return await asgi.fetch(app, request, self.env)

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

@app.get("/env")
async def root(req: Request):
    env = req.scope["env"]
    return {"message": "Here is an example of getting an environment variable: " + env.MESSAGE}

class Item(BaseModel):
    name: str
    description: str | None = None
    price: float
    tax: float | None = None

@app.post("/items/")
async def create_item(item: Item):
    return item

@app.put("/items/{item_id}")
async def create_item(item_id: int, item: Item, q: str | None = None):
    result = {"item_id": item_id, **item.dict()}
    if q:
        result.update({"q": q})
    return result

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

这篇文档对您有帮助吗?