Интерфейс шлюза асинхронного сервера
Тема этой статьи Википедии может не соответствовать общему правилу по известности . ( декабрь 2023 г. ) |
Версия | 3.0 |
---|---|
Разработчик | Команда АСГИ |
Дата выпуска | 2019-03-04 [1] |
Веб-сайт | жопа |
Лицензия | общественное достояние [2] |
Статус | Черновик |
Интерфейс асинхронного серверного шлюза ( ASGI ) — это соглашение о вызовах веб-серверов пересылки запросов в асинхронные для платформы Python и приложения. Он создан как преемник интерфейса шлюза веб-сервера (WSGI).
Там, где WSGI предоставил стандарт для синхронных Python приложений WSGI , ASGI предоставляет стандарт как для асинхронных, так и для синхронных приложений с реализацией обратной совместимости и несколькими серверами и платформами приложений.
Пример
[ редактировать ]ASGI-совместимое приложение « Hello, World! », написанное на Python :
async def application(scope, receive, send):
event = await receive()
...
await send({"type": "websocket.send", ...})
Где:
- В строке 1 определяется асинхронная функция с именем
application
, который принимает три параметра (в отличие от WSGI, который принимает только два),scope
,receive
иsend
.scope
этоdict
содержащий подробную информацию о текущем соединении, например протокол, заголовки и т. д.receive
иsend
являются асинхронными вызываемыми объектами, которые позволяют приложению получать и отправлять сообщения от/к клиенту.
- Строка 2 получает входящее событие, например HTTP-запрос или сообщение WebSocket.
await
Ключевое слово используется, поскольку операция является асинхронной. - Строка 4 асинхронно отправляет ответ обратно клиенту. В данном случае это связь через WebSocket.
Совместимость интерфейса шлюза веб-сервера (WSGI)
[ редактировать ]ASGI также разработан как надмножество WSGI , и существует определенный способ перевода между ними, позволяющий WSGI запускать приложения внутри серверов ASGI через оболочку перевода (предоставляется в библиотеке asgiref). Пул потоков можно использовать для запуска синхронных приложений WSGI вне асинхронного цикла событий.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «История версий» .
- ^ «Авторское право» . Гитхаб . Проверено 14 сентября 2022 г.