python - 如何重写代码来修复错误(RuntimeError: This event loop is already running. ) websockets + asyncio
问题描述
我有执行在线识别的代码。目前,它在最后一行给出错误“RuntimeError: This event loop is already running”。蟒蛇 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 在做什么。建立与服务器的连接,发送数据,然后等待响应。我不明白 asyncio 在这里是如何工作的。我读到(问题/53248431)现在这不起作用,因为我有版本> = 5.0 的龙卷风,他们建议降低版本,但我不想。如何正确改写?请解释它是如何工作的)
解决方案
您收到错误是因为您的上述程序/事件仍在运行,因为它没有被杀死。
因此,在终端中键入以下命令:
pkill -9 python
然后重新启动程序。
(这仅适用于 Linux 系统)
推荐阅读
- python - 输入为结构“字符串”时的numpy处理方程输入
- r - 从数据框结构创建一棵树,并在所有节点关闭的情况下对其进行渲染
- android - 颤振无法在与 canvas.drawImage 的精确偏移处绘制图像
- python - 如何绕过 Cloudflare ddos 保护抓取网站(python)
- javascript - 如何在 chrome 扩展中安全地使用客户端 ID 和客户端密码
- java - 如何求和一列的总值并将其添加到表的末尾?
- android - 如何使用共享表共享临时文件?
- reactjs - React Native中的多个DateTimePicker表单数组(一次打开一次DateTimePicker)
- ios - 如何在保持访问权限不变的同时将 Firestore 文档从一个子集合共享到另一个子集合?
- php - 同一服务器 Laravel8 上的多个项目的问题