Три выдающихся сервера 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”