
"Ce petit cadre ASGI brillant."
Introduction à
Starlette est un framework/kit ASGI léger, idéal pour la construction de services réseau asynchrones en Python.
Il est prêt pour la production et vous offre ce qui suit:
- Un framework de réseau HTTP léger et de faible complexité.
- Support WebSocket.
- Tâches en arrière-plan dans un processus.
- Démarrer et fermer les événements.
Le client de test* est construit sur
httpx. - CORS, GZip, fichiers statiques, réponses en streaming.
- Session et support de cookies.
- Couverture de test à 100%.
- Base de code pour les commentaires de type 100%.
- Il y a peu de dépendances rigides.
- est compatible avec les backends
asyncioettrio. - Excellente performance globale contre des benchmarks indépendants.
Exigence de
Python 3.8 et supérieur
Installation de
$ pip3 install starlette
Vous devrez également installer un serveur ASGI, par exemple uvicorn, daphne ou hypercorn.
$pip3 install uvicorn
Exemples de
example.py:
de starlette.applications import Starlette
from starlette.responses import JSONResponse
de starlette.routing Route d'importation
async def homepage(request):
return JSONResponse({'hello': 'world'})
app = Starlette(débogage =True, routes=[
Route('/', homepage),
])
Ensuite, exécutez l'application..."
$ uvicorn exemple:app
Pour un exemple plus complet, voir ici.
Dépendances
Starlette ne nécessite que anyio, les dépendances suivantes sont facultatives:
httpx- Si vous souhaitez utiliserTestClientest obligatoire.jinja2-Obligatoire si vous souhaitez utiliserJinja2Templates.python-multipart- Si vous souhaitez soutenir la résolution de formulaire, vous devez, avecrequest.form()。itsdangerous-nécessaire pour le support deSessionMiddleware.pyyaml-nécessaire pour le support deSchemaGenerator.
Vous pouvez tout installer avec pip3 install starlette[full].
Cadre ou kit
Starlette a été conçu pour être utilisé à la fois comme un cadre complet et comme un kit ASGI. vous pouvez utiliser n'importe lequel de ses composants indépendamment.
from starlette.responses import PlainTextResponse
async def app(scope, receive, send):
assert scope ['type'] == 'http'
response = PlainTextResponse('Hello, world!')
Await response(scope, receive, send)
Exécuter l'application app dans example.py:
$ uvicorn exemple: application
INFO: processus serveur démarré [11509]
INFO: Uvicorn running sur http://127.0.0.1:8000 (Press CTRL+C to quit)
Exécutez uvicorn avec --reload pour activer le rechargement automatique lorsque le code est modifié
Modulaire
La conception modulaire sur laquelle repose Starlette facilite la construction de composants multiplexables qui peuvent être partagés entre tous les frameworks ASGI. cela devrait permettre de créer un écosystème de middleware partagé et d'applications montables.
Une séparation propre des API signifie également qu 'il est plus facile de comprendre chaque composant individuellement.
Starlette est un code qui suit le contrat de licence BSD. Soigneusement conçu et produit. — ⭐️ —