Перейти к содержанию

Starlette

« Этот блеск небольшой ASGI рамки.»

Build Status Package version


Презентация

Starlette-это легкий фреймворк/инструментарий ASGI, который идеально подходит для создания асинхронных сетевых сервисов на Python.

Он готов к производству и предлагает вам следующее:

  • Легкая и низкая сложность HTTP-сетевой инфраструктуры.
  • Поддержка WebSocket.
  • фоновые задачи в процессе.
  • Запуск и закрытие событий. Тестирование клиента* основано на httpx.
  • CORS, GZip, статические файлы, потоковая реакция.
  • Поддержка разговоров и файлов Cookie.
  • 100% охват тестированием.
  • Кодовая база для 100% комментариев типов.
  • Почти нет жесткой зависимости.
  • совместим с asyncio и trio.
  • Высокая общая производительность для независимых эталонов.

Требования

Python 3.8 и выше

Монтаж

$ pip3 install starlette

Вам также необходимо установить сервер ASGI, например uvicorn, daphne или hypercorn.

$ pip3 install uvicorn

Примеры

example.py:

from Starlette.applications import Starlette
from starlette. response import JSONResponse
От Starlet.routing Import Route


async def homepage(request):
    Return JSONResponse({'hello': 'world'})


app = Starlette(debug=True, routes=[
    Route ('/', homepage),
])

Затем запустить приложение...

$ uvicorn example:app

Более полные примеры см. здесь.

Зависимости

Starlette требуется только anyio, следующие зависимости являются необязательными:

  • httpx-обязательное поле, если вы хотите использовать TestClient.
  • jinja2-обязательно, если вы хотите использовать Jinja2Templates
  • python-multipart-если вы хотите поддерживать разрешение форм, вам нужно использовать request.form().
  • itsdangerous-необходим для поддержки SessionMiddleware.
  • pyyaml-требуется для поддержки SchemaGenerator.

Вы можете установить все это с помощью pip3 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)

Запустите приложение app в example.py:

$ uvicorn example:app
INFO: начало процесса сервера [11509]
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

Запустите uvicorn с помощью --reload для включения автоматической перезагрузки при изменении кода.

Модульный подход

Модульный дизайн, на котором основана Starlette, облегчает создание мультиплексных компонентов, которые могут быть совместно использованы в любой структуре ASGI. Это должно привести к созданию экосистемы совместного использования промежуточного программного обеспечения и монтируемых приложений.

Чистое разделение API также означает, что легче понять каждый компонент по отдельности.


Starlette-это код, который регулируется лицензионным соглашением BSD. Тщательно разработан и изготовлен. — ⭐️ —