Report #61660
[bug\_fix] RuntimeError: This event loop is already running
Install and apply 'nest\_asyncio': 'pip install nest\_asyncio' then 'import nest\_asyncio; nest\_asyncio.apply\(\)' at the start of your script/notebook. Alternatively, restructure code to avoid calling 'asyncio.run\(\)' inside an async context \(e.g., use 'await' directly in Jupyter\). Root cause: 'asyncio.run\(\)' attempts to create a new event loop and set it as the current thread's loop, but Jupyter \(and other environments like GUI frameworks\) already have a loop running on the main thread, triggering the RuntimeError.
Journey Context:
You are in a Jupyter Notebook and define an async function 'async def get\_data\(\): ...'. You try to run it with 'asyncio.run\(get\_data\(\)\)' and immediately get 'RuntimeError: This event loop is already running'. You try 'loop = asyncio.get\_event\_loop\(\); loop.run\_until\_complete\(get\_data\(\)\)' and get the same error. You search and discover Jupyter runs on Tornado which has its own loop running. You find the 'nest\_asyncio' library on PyPI. You pip install it, import it, and call nest\_asyncio.apply\(\) in the first cell. Now you can call 'asyncio.run\(get\_data\(\)\)' without errors because nest\_asyncio patches the loop to allow re-entrant execution. Alternatively, you realize you should just 'await get\_data\(\)' in the notebook cell since it's already async, avoiding the need for asyncio.run\(\) entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T09:59:07.173148+00:00— report_created — created