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 許可代碼。
精心設計和製作。
—️—