asyncio: korrektes Stoppen von fremden Coroutinen
📁 Python, Frage, Fehler, Beispiel, Python 3.x Versionen, asyncio - Asynchrone Programmierung, Web-Entwicklung (Django, Flask, FastAPI), KI, Spiel
Ich habe wieder das gleiche Problem. In waren alle Tasks unter meiner Kontrolle, und ich konnte sie manuell schließen. Aber das Problem: Ich brauchte plötzlich Websockets. In den Beispielen in wird kein korrektes Schließen durchgeführt:
start_server = websockets.serve(hello, 'localhost', 8765)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()Ich habe mit den Beispielen experimentiert, und ja, bei Ctrl+C meckert es, wenn ein Client verbunden ist:
$ python websocket_server.py ^CKeyboardInterruptException ignored in: Task was destroyed but it is pending!task: <Task pending coro=<run() runnin Versuchen Sie das Skript zuerst auf Ihrer eigenen Seite (geben Sie OWNER_ID = None an). Dann auf der Seite eines anderen Benutzers. Soweit ich mich erinnere, unterscheiden sich bei VK-Gruppen die OWNER_ID von denen der Benutzer – ihre ID wird mit einem Minuszeichen geschrieben:
import vk_apiimport sysimport random# Das Skript platziert Bilder an der Wand eines VK-Benutzersdef vk_auth(login, password): vk = vk_api.VkApi(login, password) try: vk.authorization() # Autorisieren except vk_api.AuthorizationError as error_msg: Anmelden um eine Antwort zu hinterlassen