Avatar ·

asyncio: parada correta de corrotinas que não são suas

📁 python, pergunta, erro, exemplo, Versões do Python, asyncio: Programação Assíncrona, Tags por tema: web (Django, Flask, FastAPI), IA, jogo

Estou com o mesmo problema novamente. Em , todas as tasks estavam sob meu controle e eu podia fechá-las manualmente. Mas eis o problema: precisei de websockets. Nos exemplos em , nenhum fechamento correto é feito:

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

Testei com exemplos e, sim, ao pressionar Ctrl+C, ele reclama se houver um 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: