✨ Легкий ASGI-фреймворк, который сияет. ✨
Документация: https://www.starlette.io/
Starlette — это легковесный ASGI фреймворк/инструментарий, идеально подходящий для создания высокопроизводительных сервисов на основе asyncio.
Он готов к использованию в продакшне и предоставляет следующие возможности:
requests
.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
.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 )