如何重写代码以修复错误(RuntimeError:此事件循环已在运行。)websockets + asyncio

时间:2019-11-14 14:47:43

标签: python websocket python-asyncio

我有执行在线识别的代码。目前,它在最后一行给出错误“ RuntimeError:此事件循环已在运行”。 Anaconda 2019.10,Python 3.7.4

# websockets
async def recognize(url, data):
    async with websockets.connect(url) as websocket:
        await websocket.send(data)
        recognized_text = ""
        recognized_text = await websocket.recv()
        #print(f"< {recognized_text}")
        #print(recognized_text)
        return recognized_text

in_file = open(filename1, "rb")
data = in_file.read()
in_file.close()
print(asyncio.get_event_loop().run_until_complete(recognize(url, data)))

在此处建立会话,然后有必要传输数据进行处理并接收识别的文本。 我可以大致想象一个websocket在做什么。建立与服务器的连接,发送数据,然后等待响应。 我不了解异步在这里的工作方式。 我读到(questions / 53248431),现在这行不通,因为我的龙卷风版本> = 5.0,他们建议降低版本,但我不想这样做。 如何正确重写? 请说明其运作方式)

1 个答案:

答案 0 :(得分:0)

由于上面的程序/事件没有被杀死,因此您正在得到错误,因为它仍然在运行。

因此,在终端中键入以下命令:

pkill -9 python 

然后重新启动程序。

(仅在Linux系统中有效)