Use asyncio subprocess in OpenaiChat

This commit is contained in:
Heiner Lohaus 2023-10-28 19:02:39 +02:00
parent dc04ca9306
commit cc301a3dd8

View File

@ -1,7 +1,7 @@
from __future__ import annotations from __future__ import annotations
import uuid, json, time, os import uuid, json, time, os
import tempfile, subprocess, shutil import tempfile, shutil, asyncio
from ..base_provider import AsyncGeneratorProvider from ..base_provider import AsyncGeneratorProvider
from ..helper import get_browser, get_cookies, format_prompt, get_event_loop from ..helper import get_browser, get_cookies, format_prompt, get_event_loop
@ -174,7 +174,14 @@ fun.getToken(config).then(token => {
tmp.write(source.encode()) tmp.write(source.encode())
tmp.close() tmp.close()
try: try:
p = subprocess.Popen([node, tmp.name], stdout=subprocess.PIPE) p = await asyncio.create_subprocess_exec(
return p.stdout.read().decode() node, tmp.name,
stderr=asyncio.subprocess.PIPE,
stdout=asyncio.subprocess.PIPE
)
stdout, stderr = await p.communicate()
if p.returncode == 0:
return stdout.decode()
raise RuntimeError(f"Exec Error: {stderr.decode()}")
finally: finally:
os.unlink(tmp.name) os.unlink(tmp.name)