gengx
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
|
||||
import os
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class _QueueLogRedirect:
|
||||
@@ -39,3 +40,55 @@ class _QueueLogRedirect:
|
||||
|
||||
|
||||
queue_log_redirect = _QueueLogRedirect()
|
||||
|
||||
|
||||
class _LocalStateRedirect:
|
||||
"""把桌面端的本机配置挪到临时目录,别让测试读到开发机的真实设置。
|
||||
|
||||
这是踩过一次才补的。`ai_chat.current_provider()` 会去读
|
||||
`backend_connection.json` 判断有没有配模型网关——配了就走网关,没配才用本机
|
||||
单模型。于是只要开发机上碰巧连过一次后台(那次同步把网关地址写进了配置),
|
||||
一大片和网关毫无关系的测试就会集体改变行为:视觉、Dify、诊断脱敏、出口解析
|
||||
全都开始走网关分支。
|
||||
|
||||
症状极具误导性:报的是"视觉请求失败,降级为文字回复",看不出跟配置文件有
|
||||
任何关系。同一份代码在两台机器上结果不同,谁也说不清是谁的问题。
|
||||
|
||||
RUNTIME_FILE 也要一起挡:不挡的话,开发机上碰巧有个本地后台在跑,
|
||||
`discover_local_server_url()` 就会读到真实的同机凭证。
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self._directory = None
|
||||
self._saved = {}
|
||||
|
||||
def start(self) -> None:
|
||||
import ai_config
|
||||
import backend_client
|
||||
|
||||
self._directory = tempfile.TemporaryDirectory()
|
||||
root = self._directory.name
|
||||
self._saved = {
|
||||
"CONNECTION_FILE": backend_client.CONNECTION_FILE,
|
||||
"RUNTIME_FILE": backend_client.RUNTIME_FILE,
|
||||
"_SETTINGS_FILE": ai_config._SETTINGS_FILE,
|
||||
}
|
||||
backend_client.CONNECTION_FILE = Path(root) / "backend_connection.json"
|
||||
backend_client.RUNTIME_FILE = Path(root) / "backend_runtime.json"
|
||||
ai_config._SETTINGS_FILE = os.path.join(root, "ai_settings.json")
|
||||
|
||||
def stop(self) -> None:
|
||||
import ai_config
|
||||
import backend_client
|
||||
|
||||
if self._saved:
|
||||
backend_client.CONNECTION_FILE = self._saved["CONNECTION_FILE"]
|
||||
backend_client.RUNTIME_FILE = self._saved["RUNTIME_FILE"]
|
||||
ai_config._SETTINGS_FILE = self._saved["_SETTINGS_FILE"]
|
||||
self._saved = {}
|
||||
if self._directory is not None:
|
||||
self._directory.cleanup()
|
||||
self._directory = None
|
||||
|
||||
|
||||
local_state_redirect = _LocalStateRedirect()
|
||||
|
||||
Reference in New Issue
Block a user