websockets
?websockets — это библиотека для создания серверов и клиентов WebSocket на Python с упором на корректность, простоту, надежность и производительность.
Построенная на основе asyncio
, стандартной среды асинхронного ввода-вывода Python, реализация по умолчанию предоставляет элегантный API на основе сопрограмм.
Также доступны реализация поверх threading
и реализация без ввода-вывода.
Документация доступна на сайте Read the Docs.
Вот эхо-сервер с API asyncio
:
#!/usr/bin/env python
import asyncio
from websockets . server import serve
async def echo ( websocket ):
async for message in websocket :
await websocket . send ( message )
async def main ():
async with serve ( echo , "localhost" , 8765 ):
await asyncio . get_running_loop (). create_future () # run forever
asyncio . run ( main ())
Вот как клиент отправляет и получает сообщения с помощью API threading
:
#!/usr/bin/env python
from websockets . sync . client import connect
def hello ():
with connect ( "ws://localhost:8765" ) as websocket :
websocket . send ( "Hello world!" )
message = websocket . recv ()
print ( f"Received: { message } " )
hello ()
Это выглядит хорошо?
Начните работу с учебником!
Доступно как часть подписки Tidelift.
Разработчики веб-сокетов и тысяч других пакетов работают с Tidelift, чтобы обеспечить коммерческую поддержку и обслуживание зависимостей с открытым исходным кодом, которые вы используете для создания своих приложений. Экономьте время, снижайте риски и улучшайте работоспособность кода, платя при этом специалистам по сопровождению именно тех зависимостей, которые вы используете. Узнать больше.
(Если вы участвуете в websockets
и хотите стать официальным поставщиком поддержки, дайте мне знать.)
websockets
? Развитие websockets
определяется четырьмя принципами:
websockets
тщательно тестируются на соответствие RFC 6455. Непрерывная интеграция не работает при 100% охвате ветки.msg = await ws.recv()
и await ws.send(msg)
. websockets
берет на себя управление соединениями, чтобы вы могли сосредоточиться на своем приложении.websockets
созданы для производства. Например, это была единственная библиотека, которая правильно обрабатывала противодавление до того, как проблема стала широко известна в сообществе Python.Документация является первостепенной задачей в проекте. Перейдите в раздел «Прочитать документацию» и убедитесь в этом сами.
websockets
? Если вы предпочитаете обратные вызовы сопрограммам: websockets
были созданы, чтобы предоставить лучший API на основе сопрограмм для управления соединениями WebSocket в Python. Выберите другую библиотеку для API на основе обратного вызова.
Если вы ищете смешанную библиотеку HTTP/WebSocket: websockets
призвана стать отличной реализацией RFC 6455: протокол WebSocket и RFC 7692: расширения сжатия для WebSocket. Его поддержка HTTP минимальна — ее достаточно для проверки работоспособности HTTP.
Если вы хотите сделать и то, и другое на одном сервере, обратите внимание на HTTP-фреймворки, которые основаны на websockets
и поддерживают соединения WebSocket, например Sanic.
Сообщения об ошибках, исправления и предложения приветствуются!
Чтобы сообщить об уязвимости безопасности, воспользуйтесь контактом службы безопасности Tidelift. Tidelift будет координировать исправление и раскрытие информации.
Для чего-либо еще, пожалуйста, откройте проблему или отправьте запрос на включение.
Участники должны соблюдать Кодекс поведения участников.
websockets
выпускается под лицензией BSD.