Aller au contenu

Starlette, étoile

"Ce petit cadre ASGI brillant."

Build Status Package version


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 asyncio et trio.
  • 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 utiliser TestClient est obligatoire.
  • jinja2-Obligatoire si vous souhaitez utiliser Jinja2Templates.
  • python-multipart - Si vous souhaitez soutenir la résolution de formulaire, vous devez, avec request.form() 。
  • itsdangerous-nécessaire pour le support de SessionMiddleware.
  • pyyaml-nécessaire pour le support de SchemaGenerator.

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. — ⭐️ —