我正在使用以下代码来测试本地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上的消息。
答案 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")
请注意,“握手”可能不会在此处完成,因为两种方式都需要接受它,但是上述内容可以使您进行测试,以确保网址正确路由等。