Avatar ·

asyncio: 正确停止非自己的协程

📁 python, 问题, 错误, 示例, Python 版本讨论:Python 3.x 最新动态, asyncio:异步编程库, 网络, 人工智能, 游戏

我又遇到了同样的问题。之前所有task都在我的控制之下,我可以手动关闭它们。但麻烦的是:我现在需要用到websockets。在示例中没有任何正确的关闭操作:

start_server = websockets.serve(hello, 'localhost', 8765)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()

我尝试了一些示例,确实,如果有客户端连接时按Ctrl+C会报错:

$ python websocket_server.py ^CKeyboardInterruptException ignored in: Task was destroyed but it is pending!task: <Task pending coro=<run() running at websockets/protocol.py:235>   wait_for=<Future pending cb=[Task._wakeup()]>  cb=[_wait.<locals>._on_completion() at asyncio/tasks.py: