starlette
Version 0.41.3
闪闪发光的小型 ASGI 框架。
文档:https://www.starlette.io
源代码:https://github.com/encode/starlette
Starlette 是一个轻量级的 ASGI 框架/工具包,非常适合用 Python 构建异步 Web 服务。
它已做好生产准备,并为您提供以下功能:
httpx
构建的测试客户端。asyncio
和trio
后端兼容。$ pip install starlette
您还需要安装 ASGI 服务器,例如 uvicorn、daphne 或 hypercorn。
$ pip install uvicorn
from starlette . applications import Starlette
from starlette . responses import JSONResponse
from starlette . routing import Route
async def homepage ( request ):
return JSONResponse ({ 'hello' : 'world' })
routes = [
Route ( "/" , endpoint = homepage )
]
app = Starlette ( debug = True , routes = routes )
然后使用 Uvicorn 运行应用程序:
$ uvicorn example:app
有关更完整的示例,请参阅encode/starlette-example。
Starlette 仅需要anyio
,以下是可选的:
httpx
- 如果您想使用TestClient
需要。jinja2
- 如果您想使用Jinja2Templates
则必需。python-multipart
- 如果您想支持表单解析,则需要使用request.form()
。itsdangerous
- SessionMiddleware
支持所必需的。pyyaml
- SchemaGenerator
支持所需。您可以使用pip install starlette[full]
安装所有这些。
Starlette 被设计为既可以用作完整的框架,也可以用作 ASGI 工具包。您可以独立使用它的任何组件。
from starlette . responses import PlainTextResponse
async def app ( scope , receive , send ):
assert scope [ 'type' ] == 'http'
response = PlainTextResponse ( 'Hello, world!' )
await response ( scope , receive , send )
运行example.py
中的app
应用程序:
$ uvicorn example:app
INFO: Started server process [11509]
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
使用--reload
运行 uvicorn 以启用代码更改时的自动重新加载。
Starlette 的模块化设计促进了构建可在任何 ASGI 框架之间共享的可重用组件。这应该能够实现共享中间件和可安装应用程序的生态系统。
干净的 API 分离还意味着更容易单独理解每个组件。
Starlette 是 BSD 许可代码。
精心设计和制作。
—️—