From 0b51371bcf1b28707e51a2b71e880ccdc739eb87 Mon Sep 17 00:00:00 2001 From: Concedo <39025047+LostRuins@users.noreply.github.com> Date: Wed, 23 Sep 2026 02:29:09 +0800 Subject: [PATCH] fix koboldcpp sync monitor --- koboldcpp.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/koboldcpp.py b/koboldcpp.py index 3c4fd4c90..68bcbe1ae 100644 --- a/koboldcpp.py +++ b/koboldcpp.py @@ -5677,9 +5677,12 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler): if api_format in (3, 4): genparams['_oai_generation_pending'] = True try: - # Keep the event loop free so disconnections can abort non-streaming requests too. - loop = asyncio.get_running_loop() - genout = await loop.run_in_executor(None, run_blocking) + if stream_flag: + loop = asyncio.get_event_loop() + executor = ThreadPoolExecutor() + genout = await loop.run_in_executor(executor, run_blocking) + else: + genout = run_blocking() finally: genparams.pop('_oai_generation_pending', None) @@ -6432,9 +6435,10 @@ class KcppServerRequestHandler(http.server.SimpleHTTPRequestHandler): tasks.append(self.handle_sse_stream(genparams, api_format)) generate_task = asyncio.create_task(run_generation()) tasks.append(generate_task) - monitor_task = asyncio.create_task(self.monitor_connection(handle.abort_generate)) - if stream_flag and api_format in (4, 7, 9) and genparams.get('using_openai_tools', False): - tool_keepalive_task = asyncio.create_task(self.send_tool_stream_keepalives(genparams, api_format)) + if stream_flag: + monitor_task = asyncio.create_task(self.monitor_connection(handle.abort_generate)) + if api_format in (4, 7, 9) and genparams.get('using_openai_tools', False): + tool_keepalive_task = asyncio.create_task(self.send_tool_stream_keepalives(genparams, api_format)) await asyncio.gather(*tasks) generate_result = generate_task.result() return generate_result