跳转到内容
搜索文档

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}

这篇文档对您有帮助吗?