Рубрики
Без рубрики

Три сервера Python Asgi

Три выдающихся сервера ASGI – это хорошие варианты тестирования и запуска вашего приложения ASGI: Uvicorn, Hyp … Tagged с Python, Asgi.

Три выдающихся сервера ASGI – это хорошие варианты тестирования и запуска вашего приложения ASGI: Uvicorn , Гиперкорн и Дафна Анкет Эта статья дает краткий обзор каждого из них, с примерами для вызова командной строки.

Приложение ASGI

Во -первых, давайте сделаем простое приложение ASGI и сохраните его в текущем каталоге с именем файла SimpleAsgi.py Анкет

async def app(scope, receive, send):
    headers = [(b"content-type", b"text/html")]
    await send({"type": "http.response.start", "status": 200, "headers": headers})
    await send({"type": "http.response.body", "body": scope["raw_path"]})

Это приложение отправляет байты необработанного пути в качестве тела ответа HTTP. При подаче на сервер ASGI вы сможете указать свой браузер на что -то вроде http://localhost:8000/some/path/to/where/we/want/to/be/ и затем просмотрите путь, в данном случае “/some/path/to/where/we/wane/to/be/”.

Давайте попробуем подавать это с различными серверами.

Установите виртуальную среду и установите сервер (ы)

В вашем любимом терминале перейдите на рабочий каталог, который вы хотите использовать (сначала создайте каталог, если это необходимо), затем создайте виртуальную среду, подобную SO:

python -m venv venv

Используйте исполняемый файл Python, который вы хотите использовать в виртуальной среде. Это можно назвать Python , как указано выше, или это может быть Python3 или Python3.8 или Python3.9 Анкет Как видно выше, я обычно использую имя Вен Для имени каталога виртуальной среды, которое оказалось тем же именем, что и Вен Модуль Python мы звоняем.

Теперь активируйте виртуальную среду с

source ./venv/bin/activate

или в Windows:

.\venv\Scripts\Activate.ps1

Если не использовать Bash или PowerShell, вы можете посмотреть в ./venv/bin или . \ venv \ scripts каталог, чтобы увидеть другие варианты для CMD, FISH или CSH.

Теперь мы можем установить любые или все серверы ASGI, которые вы хотите попробовать.

pip install uvicorn
pip install hypercorn
pip install daphne

Или просто PIP установить Uvicorn Hypercorn Daphne и покончить с этим.

Готов к экспериментированию.

Uvicorn

Uvicorn это первый сервер, который я обычно выбираю. Это быстро, используя uvloop Если это может. Uvicorn поддерживает HTTP/1.1 и WebSockets, но не (пока) поддерживает HTTP/2.

Установить Uvicorn с PIP, как подробно описано выше.

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

uvicorn --host 0.0.0.0 --port 8000 simpleasgi:app

Попробуйте это в своем браузере, изменив путь и освежая столько раз, сколько захотите.

Гиперкорн

Исторически, Гиперкорн подарок от Кварта Асинхровая веб -фреймворк. В отличие от Uvicorn, Гиперкорн действительно поддерживает HTTP/2 прямо сейчас. Он может использовать uvloop Как делает Uvicorn, или использует другие петли событий, даже из которых из менее распространенного, но любопытного ( Ha !) библиотека трио Анкет

Установить Гиперкорн с PIP, как подробно описано выше.

Теперь запустите приложение с

hypercorn --bind 0.0.0.0:8000 simpleasgi:app

Попробуйте это в своем браузере и процветайте.

Дафна

Дафна был первым, если я правильно понимаю и прихожу к нам из Джанго каналы проект. Он реализован с использованием Извращенный Анкет Как гиперкорн, Дафна действительно имеет текущую поддержку для HTTP/2, при условии, что вы установите необходимую Tiveled TLS и http2 зависимости.

Дафна стабильна и служит эталонной реализацией для ASGI.

Установить Дафна с PIP, как подробно описано выше.

Теперь запустите приложение с

daphne --bind 0.0.0.0 --port 8000 simpleasgi:app

Запустите свой веб -клиент, укажите его в Localhost и наслаждайтесь.

Помощь

uvicorn --help
hypercorn --help
daphne --help

Оригинал: “https://dev.to/bowmanjd/the-three-python-asgi-servers-5447”