В чем разница между поддержкой веб-сокетов aiohttp
(т. е. WebSocketResponse
) и веб-сокетами (оба предлагают асинхронную поддержку) ? Можно ли их смешивать?
В чем разница/совместимость между aiohttp и веб-сокетами?
Ответы (2)
Это две разные библиотеки, поддерживаемые разными людьми. Оба основаны на asyncio
.
websockets
призвана стать простой и удобной библиотекой для реализации клиентов и серверов веб-сокетов и поддерживается в основном < href="https://github.com/aaugustin/websockets/graphs/contributors" rel="noreferrer">один разработчик. С другой стороны, aiohttp
— это довольно большая библиотека, поддерживаемая большая команда, предлагающая не только веб-сокеты, но, как следует из названия, и функциональность HTTP. Некоторые его функции перекрываются с функциями flask
и requests
, но асинхронно.
Что касается размера, websockets
составляет около 4 тыс. строк, а aiohttp
— около 40 тыс. строк. Если вам просто нужен простой и удобный клиент веб-сокетов, выберите websockets
. Если вы уже используете aiohttp
и вам нужна функциональность веб-сокетов, используйте то, что может предложить aiohttp
. Не вижу смысла их смешивать.
Обратите внимание на деталь, которая может заставить сделать выбор людей, которым необходимо поддерживать системный Python в Debian 8: aiohttp
устанавливает его минимальная поддерживаемая версия в Python 3.5.3 (это системная версия Python в Debian 9).
Хотя у разработчиков aiohttp
есть веские причины для принятия такого решения, меньший набор функций в websockets
позволяет этому проекту поддерживать систему Python 3.4.x Python в Debian 8, хотя и с некоторой адаптацией кода вашего собственного приложения для совместимости с Python 3.4. : https://websockets.readthedocs.io/en/stable/intro.html#python-lt-36
websockets
. Автобан намного сложнее отлаживать, он намного сложнее и, вероятно, в большинстве случаев будет излишним. - person Gustavo Bezerra   schedule 30.03.2017