在python中测试websocket可用性的简单方法

时间:2018-10-07 19:09:28

标签: python websocket

我正在使用以下代码来测试本地websocket服务器是否正在运行:

    [FOREACH({IMAGES[1]})]
{IMAGES[1]/NEXT_IMAGES[1]/NEXT_IMAGE[1]/URL[1]}
[ENDFOREACH]

有没有不使用asyncio的简单方法?诸如此类的东西:

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())

基本上,我只是试图找到最简单的方法来测试我的websocket服务器是否正在侦听和接收特定URL上的消息。

2 个答案:

答案 0 :(得分:1)

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")

答案 1 :(得分:0)

您可以使用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")

请注意,“握手”可能不会在此处完成,因为两种方式都需要接受它,但是上述内容可以使您进行测试,以确保网址正确路由等。