1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ivan_wh-starlette

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 09.03.2025 14:02 4d12b25

starlette

✨ Легкий ASGI-фреймворк, который сияет. ✨

Статус сборки Покрытие Версия пакета


Документация: https://www.starlette.io/


Starlette

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

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

  • Серьезно впечатляющая производительность.
  • Поддержка WebSockets.
  • Поддержка GraphQL.
  • Выполнение фоновых задач внутри процесса.
  • События запуска и завершения работы.
  • Тестовый клиент, основанный на requests.
  • CORS, GZip, статические файлы, потоковое отображение ответов.
  • Поддержка сессий и cookies.
  • 100% покрытие тестами.
  • 100% аннотирован код.
  • Нулевые жесткие зависимости.

Требования

Python 3.6+

Установка

$ pip3 install starlette

Вы также захотите установить сервер ASGI, такой как uvicorn, daphne, или hypercorn.```shell $ pip3 install uvicorn


## Пример

```python
from starlette.applications import Starlette
from starlette.responses import JSONResponse
import uvicorn

app = Starlette(debug=True)


@app.route('/')
async def homepage(request):
    return JSONResponse({'hello': 'world'})


if __name__ == '__main__':
    uvicorn.run(app, host='0.0.0.0', port=8000)

Для более полного примера см. encode/starlette-example.

Внешние зависимости

Starlette не имеет жестких зависимостей, но следующие являются опциональными:

  • requests — Обязательно, если вы хотите использовать TestClient.
  • aiofiles — Обязательно, если вы хотите использовать FileResponse или StaticFiles.
  • jinja2 — Обязательно, если вы хотите использовать Jinja2Templates.
  • python-multipart — Обязательно, если вы хотите поддерживать парсинг формы с помощью request.form().
  • itsdangerous — Обязательно для поддержки SessionMiddleware.
  • [pyyaml][pyyaml] — Обязательно для поддержки SchemaGenerator.
  • graphene — Обязательно для поддержки GraphQLApp.
  • ujson — Обязательно, если вы хотите использовать UJSONResponse.

Вы можете установить все это с помощью команды pip3 install starlette[full].

Фреймворк или набор инструментов

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

from starlette.responses import PlainTextResponse


class App:
    def __init__(self, scope):
        assert scope['type'] == 'http'
        self.scope = scope
```    async def __call__(self, receive, send):
        response = PlainTextResponse('Привет, мир!')
        await response(receive, send)

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

$ uvicorn example:App
INFO: Запущен процесс сервера [11509]
INFO: Uvicorn запущен на http://127.0.0.1:8000 (Нажмите Ctrl+C для завершения работы)

Запустите uvicorn с параметром --reload, чтобы включить автоматическое перезапуск при изменениях кода.

Модульность

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

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

Производительность

Независимые тесты TechEmpower показывают, что приложения на Starlette, работающие под управлением Uvicorn, являются одними из самых быстрых Python-фреймворков доступных. ()*

Для высокопроизводительной нагрузки вы должны:

  • Убедиться, что установлен пакет ujson и используется UJSONResponse.
  • Запустить с помощью gunicorn с использованием рабочего класса uvicorn.
  • Использовать один или два рабочих процесса на каждое ядро ЦПУ. (Возможно, потребуется экспериментировать с этим.)
  • Отключить логирование запросов.

Пример:

gunicorn -w OnClickListener -k uvicorn.workers.UvicornWorker --log-level warning example:app
```Некоторые из серверов ASGI также имеют чистые реализации на Python, поэтому вы можете запускать приложения под `PyPy`, если ваш код имеет части, ограничены производительностью ЦПУ.

Или программно:

```python
uvicorn.run(..., http='h11', loop='asyncio')

Или с помощью Gunicorn:

gunicorn -k uvicorn.workers.UvicornH11Worker ...

— ⭐️ —

Starlette — BSD-лицензионный код. Разработан и создан в Брайтоне, Англия.

python-multipart: https Yöntem belgelerine https://andrew-d.github.io/python-multipart/ graphene: https://graphene-python.org/ itsdangerous: https://pythonhosted.org/itsdangerous/ sqlalchemy: https://www.sqlalchemy.org ujson: https://github.com/esnme/ultrajson

Здесь должны быть ссылки на документацию

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ivan_wh-starlette.git
git@api.gitlife.ru:oschina-mirror/ivan_wh-starlette.git
oschina-mirror
ivan_wh-starlette
ivan_wh-starlette
master