Add "create_event_loop" helper

pull/924/head
Heiner Lohaus 1 year ago
parent 55577031d5
commit 587f4ad2c9

@ -47,9 +47,11 @@ class AsyncProvider(BaseProvider):
stream: bool = False,
**kwargs
) -> CreateResult:
check_running_loop()
yield asyncio.run(cls.create_async(model, messages, **kwargs))
loop = create_event_loop()
try:
yield loop.run_until_complete(cls.create_async(model, messages, **kwargs))
finally:
loop.close()
@staticmethod
@abstractmethod
@ -70,10 +72,7 @@ class AsyncGeneratorProvider(AsyncProvider):
stream: bool = True,
**kwargs
) -> CreateResult:
check_running_loop()
# Force use selector event loop on windows
loop = asyncio.SelectorEventLoop()
loop = get_new_event_loop()
try:
generator = cls.create_async_generator(
model,
@ -108,12 +107,17 @@ class AsyncGeneratorProvider(AsyncProvider):
) -> AsyncGenerator:
raise NotImplementedError()
# Don't create a new loop in a running loop
def check_running_loop():
def create_event_loop():
# Don't create a new loop in a running loop
if asyncio.events._get_running_loop() is not None:
raise RuntimeError(
'Use "create_async" instead of "create" function in a async loop.')
# Force use selector event loop on windows
return asyncio.SelectorEventLoop()
_cookies = {}
def get_cookies(cookie_domain: str) -> dict:

Loading…
Cancel
Save