From cc301a3dd82f26d9b33894beb1ec80f979a20d49 Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Sat, 28 Oct 2023 19:02:39 +0200 Subject: [PATCH] Use asyncio subprocess in OpenaiChat --- g4f/Provider/needs_auth/OpenaiChat.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/g4f/Provider/needs_auth/OpenaiChat.py b/g4f/Provider/needs_auth/OpenaiChat.py index eaccb7f1..fb81face 100644 --- a/g4f/Provider/needs_auth/OpenaiChat.py +++ b/g4f/Provider/needs_auth/OpenaiChat.py @@ -1,7 +1,7 @@ from __future__ import annotations import uuid, json, time, os -import tempfile, subprocess, shutil +import tempfile, shutil, asyncio from ..base_provider import AsyncGeneratorProvider 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.close() try: - p = subprocess.Popen([node, tmp.name], stdout=subprocess.PIPE) - return p.stdout.read().decode() + p = await asyncio.create_subprocess_exec( + 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: os.unlink(tmp.name) \ No newline at end of file