Report #76561
[bug\_fix] RuntimeError: This event loop is already running in Jupyter/IPython
In Jupyter Notebook/Lab \(IPython 7.0\+\), use \`await\` directly at the top level of a cell \(e.g., \`await fetch\_data\(\)\`\), which is automatically supported. If you need to run \`asyncio.run\(\)\` inside a function or library that creates a new loop, install and apply \`nest\_asyncio\` by adding \`import nest\_asyncio; nest\_asyncio.apply\(\)\` at the start of your notebook.
Journey Context:
You are working in a Jupyter notebook and want to use an async library like \`aiohttp\` or \`asyncpg\`. You define an async function \`async def fetch\(\): ...\` and then try to run it with \`asyncio.run\(fetch\(\)\)\` in the next cell. You immediately get \`RuntimeError: This event loop is already running\`. You try \`await fetch\(\)\` and it works \(if using modern Jupyter\), but then you want to call this from inside another library that uses \`asyncio.run\(\)\` internally. You search and find that Jupyter already runs an event loop in the background for kernel communication. The solution is either using top-level await \(which IPython patches to work in the existing loop\) or using \`nest\_asyncio\` which patches the asyncio library to allow nested loops, enabling \`asyncio.run\(\)\` to work inside the existing Jupyter loop.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T11:06:01.477582+00:00— report_created — created