Was ist die Python-Methode, um eine Asyncio-Ereignisschleife für immer auszuführen?Python

Python-Programme
Anonymous
 Was ist die Python-Methode, um eine Asyncio-Ereignisschleife für immer auszuführen?

Post by Anonymous »

Aus den Dokumenten geht hervor, dass die empfohlene Methode zum Starten einer Asyncio-Anwendung die Verwendung von asyncio.run() ist. Meine Anwendung sieht also so aus:

Code: Select all

async def async_main():
# Everything here can use asyncio.create_task():
o = ObjectThatMustBeKeptReferenced()
create_tasks_and_register_callbacks(o)

# Wait forever, ugly:
while True:
await asyncio.sleep(10000)

asyncio.run(async_main())
Diese Endlosschleife am Ende von async_main() fühlt sich sehr falsch an. In anderen Sprachen würde ich dort die Ereignisschleife für immer nennen. Also habe ich Folgendes versucht:

Code: Select all

def main():
loop = asyncio.get_event_loop()

# Everything here can use asyncio.create_task():
o = ObjectThatMustBeKeptReferenced()
create_tasks_and_register_callbacks(o)

# Wait forever, pretty:
loop.run_forever()

main()
Das Problem hierbei ist, dass dies mit einem Fehler der Art RuntimeError: no running event loop fehlschlägt, wenn ich asyncio.create_task() in meinen Funktionen aufrufe, obwohl die Ereignisschleife erstellt und im Thread registriert wurde.
Was ist Python, eine Möglichkeit, für immer in der asyncio-Ereignisschleife zu schlafen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post