Avatar ·

asyncio: detención correcta de corrutinas que no son propias

📁 python, pregunta, Error: Análisis de errores (SyntaxError, TypeError, etc.), ejemplo, Versiones de Python: python3, asyncio: programación asíncrona, Temas de etiquetas: web, IA, juego

Estoy de nuevo con el mismo problema. En todos los tasks estaban bajo mi control, y podía cerrarlos manualmente. Pero aquí está el problema: necesité websockets. En los ejemplos en no se realiza ningún cierre correcto:

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

Jugué con los ejemplos, y sí, con Ctrl+C se queja si hay un cliente conectado:

$ 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: