[Python] asyncio: RuntimeError this event loop is already running

Discussão em 'Python' iniciado por Stack, Abril 23, 2025.

  1. Stack

    Stack Membro Participativo

    This seems like a common problem. See for example: Error "RuntimeError: This event loop is already running" in Python

    But in my case, I'm only starting the event loop once, at least as far as I can see. Also this example follows directly the instructions here:

    import asyncio

    loop = asyncio.get_event_loop()

    async def coroutine():
    print("hey")
    await asyncio.sleep(1)
    print("ho")
    return 1


    async def main():

    tasks = []
    for i in range(2):
    tasks.append(asyncio.ensure_future(coroutine()))
    await asyncio.gather(*tasks)

    results = loop.run_until_complete(main())
    loop.close()


    This prints an error message, and the output of the print() calls in the coroutines:

    ---------------------------------------------------------------------------
    RuntimeError Traceback (most recent call last)
    <ipython-input-1-f4a74fbfac46> in <module>
    16 await asyncio.gather(*tasks)
    17
    ---> 18 results = loop.run_until_complete(asyncio.gather(*tasks))
    19 loop.close()

    ~/anaconda3/envs/keras_dev/lib/python3.6/asyncio/base_events.py in run_until_complete(self, future)
    453 future.add_done_callback(_run_until_complete_cb)
    454 try:
    --> 455 self.run_forever()
    456 except:
    457 if new_task and future.done() and not future.cancelled():

    ~/anaconda3/envs/keras_dev/lib/python3.6/asyncio/base_events.py in run_forever(self)
    407 self._check_closed()
    408 if self.is_running():
    --> 409 raise RuntimeError('This event loop is already running')
    410 if events._get_running_loop() is not None:
    411 raise RuntimeError(

    RuntimeError: This event loop is already running
    hey
    hey
    ho
    ho


    And the results variable stays undefined.

    How can I spin up a list of coroutines and gather their outputs correctly?

    Continue reading...

Compartilhe esta Página