Простой способ проверить доступность websocket в python - PullRequest
0 голосов
/ 07 октября 2018

Я использую следующий код для проверки работы локального сервера веб-сокетов:

import asyncio
import websockets

async def hello():
    async with websockets.connect('ws://127.0.0.1:8000/ws/registration/123') as websocket:
        await websocket.send(json_data)

asyncio.get_event_loop().run_until_complete(hello())

Есть ли более простой способ сделать это без использования asyncio?Что-то вроде:

import asyncio
import websockets

conn = websockets.connect('ws://127.0.0.1:8000/ws/registration/123')
conn.send('hello')

По сути, я просто пытаюсь найти самый простой способ проверить, прослушивает ли мой сервер веб-сокетов и принимает ли сообщения по определенному URL.

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Разве async_to_sync не делает это более сложным?Почему бы просто не создать нормальную test_url функцию:

def test_url(url, data=""):
    async def inner():
        async with websockets.connect(url) as websocket:
            await websocket.send(data)
    return asyncio.get_event_loop().run_until_complete(inner())

test_url("ws://127.0.0.1:8000/ws/registration/123")
0 голосов
/ 07 октября 2018

Вы можете сделать вышеупомянутое, используя async_to_sync, например:

from asgiref.sync import async_to_sync
import websockets

def test_url(url, data=""):
    conn = async_to_sync(websockets.connect)(url)
    async_to_sync(conn.send)(data)


test_url("ws://127.0.0.1:8000/ws/registration/123")

Обратите внимание, что "рукопожатие" здесь, вероятно, не будет завершено, потому что оно должно быть принято в обоих направлениях, но вышеприведенное должнопозволяет проверить, правильно ли маршрутизируются URL-адреса и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...