Spaces:
Running
Running
import asyncio | |
from .log import logger | |
def create_event_loop() -> asyncio.AbstractEventLoop: | |
""" | |
Ensure that there is always an event loop available. | |
This function tries to get the current event loop. If the current event loop is closed or does not exist, | |
it creates a new event loop and sets it as the current event loop. | |
Returns: | |
asyncio.AbstractEventLoop: The current or newly created event loop. | |
""" | |
try: | |
# Try to get the current event loop | |
current_loop = asyncio.get_event_loop() | |
if current_loop.is_closed(): | |
raise RuntimeError("Event loop is closed.") | |
return current_loop | |
except RuntimeError: | |
# If no event loop exists or it is closed, create a new one | |
logger.info("Creating a new event loop in main thread.") | |
new_loop = asyncio.new_event_loop() | |
asyncio.set_event_loop(new_loop) | |
return new_loop | |