В чем разница/совместимость между aiohttp и веб-сокетами?

В чем разница между поддержкой веб-сокетов aiohttp (т. е. WebSocketResponse) и веб-сокетами (оба предлагают асинхронную поддержку) ? Можно ли их смешивать?


person Rhangaun    schedule 16.05.2016    source источник
comment
вы, вероятно, могли бы смешивать их, но есть ли какая-то причина, по которой вы не хотите просто использовать встроенные веб-сокеты aiohttp?   -  person songololo    schedule 16.05.2016
comment
эти два находятся на вершине поддержки асинхронного ввода-вывода Python, представленной в PEP 3156, поэтому я думаю, что производительность действительно похожа   -  person olmerg    schedule 16.05.2016
comment
autobhan также кажется альтернативой.   -  person Rhangaun    schedule 17.05.2016
comment
@Rhangaun Я рекомендую не тратить время на автобан. Если ваша задача проста, просто используйте websockets. Автобан намного сложнее отлаживать, он намного сложнее и, вероятно, в большинстве случаев будет излишним.   -  person Gustavo Bezerra    schedule 30.03.2017


Ответы (2)


Это две разные библиотеки, поддерживаемые разными людьми. Оба основаны на asyncio.

websockets призвана стать простой и удобной библиотекой для реализации клиентов и серверов веб-сокетов и поддерживается в основном < href="https://github.com/aaugustin/websockets/graphs/contributors" rel="noreferrer">один разработчик. С другой стороны, aiohttp — это довольно большая библиотека, поддерживаемая большая команда, предлагающая не только веб-сокеты, но, как следует из названия, и функциональность HTTP. Некоторые его функции перекрываются с функциями flask и requests, но асинхронно.

Что касается размера, websockets составляет около 4 тыс. строк, а aiohttp — около 40 тыс. строк. Если вам просто нужен простой и удобный клиент веб-сокетов, выберите websockets. Если вы уже используете aiohttp и вам нужна функциональность веб-сокетов, используйте то, что может предложить aiohttp. Не вижу смысла их смешивать.

person Gustavo Bezerra    schedule 30.03.2017

Обратите внимание на деталь, которая может заставить сделать выбор людей, которым необходимо поддерживать системный 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

person ncoghlan    schedule 05.02.2019