Files

29 lines
816 B
Python

import asyncio
from typing import Any, Callable, List, Optional
from .metaclasses import Singleton
class ComfyThreading(metaclass=Singleton):
"""
A singleton class to provide threading functionality for a comfy extension.
"""
def __init__(self) -> None:
pass
@classmethod
def wait_for_async(cls, async_fn: Callable[[], Any], loop: Optional[asyncio.AbstractEventLoop] = None) -> Any:
res: List[Any] = []
async def run_async() -> None:
r = await async_fn()
res.append(r)
if loop is None:
try:
loop = asyncio.get_event_loop()
except:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(run_async())
return res[0]