[patch] 新增多实例测试开关控制流 逻辑
This commit is contained in:
@@ -194,12 +194,19 @@ class WebSocketManager:
|
|||||||
"""连接后端WebSocket"""
|
"""连接后端WebSocket"""
|
||||||
try:
|
try:
|
||||||
|
|
||||||
# 1 保存token到配置
|
# 🔥 根据配置决定是否保存token
|
||||||
|
# 生产模式:保存token,方便用户下次自动加载
|
||||||
|
# 测试模式:不保存,避免多实例冲突
|
||||||
|
import config as cfg
|
||||||
|
if not cfg.is_multi_instance_mode():
|
||||||
try:
|
try:
|
||||||
from config import set_saved_token
|
from config import set_saved_token
|
||||||
set_saved_token(token)
|
set_saved_token(token)
|
||||||
except Exception:
|
self._log("生产模式:已保存token到配置文件", "INFO")
|
||||||
pass
|
except Exception as e:
|
||||||
|
self._log(f"保存token失败: {e}", "WARNING")
|
||||||
|
else:
|
||||||
|
self._log("测试模式:不保存token(支持多实例运行)", "INFO")
|
||||||
|
|
||||||
# 2 获取或创建后端客户端
|
# 2 获取或创建后端客户端
|
||||||
backend = get_backend_client()
|
backend = get_backend_client()
|
||||||
|
|||||||
33
config.py
33
config.py
@@ -45,6 +45,39 @@ WINDOW_TITLE = "AI回复连接入口-V1.0"
|
|||||||
# 应用版本号(用于版本检查)
|
# 应用版本号(用于版本检查)
|
||||||
APP_VERSION = "1.5.66"
|
APP_VERSION = "1.5.66"
|
||||||
|
|
||||||
|
# 🔥 多实例运行模式开关
|
||||||
|
# - True: 测试模式(多实例,不保存token,避免冲突)
|
||||||
|
# - False: 生产模式(单实例,保存token,自动加载)
|
||||||
|
#
|
||||||
|
# 使用方法:
|
||||||
|
# 1. 修改此值:MULTI_INSTANCE_MODE = False # 改为生产模式
|
||||||
|
# 2. 或设置环境变量:SHUIDROP_MULTI_INSTANCE=0 # 临时切换到生产模式
|
||||||
|
MULTI_INSTANCE_MODE = True # 默认:测试模式
|
||||||
|
|
||||||
|
def is_multi_instance_mode() -> bool:
|
||||||
|
"""
|
||||||
|
检查是否为多实例模式(支持环境变量覆盖)
|
||||||
|
|
||||||
|
优先级:
|
||||||
|
1. 环境变量 SHUIDROP_MULTI_INSTANCE(0=生产,1=测试)
|
||||||
|
2. 配置文件 MULTI_INSTANCE_MODE
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True=多实例模式,False=单实例模式
|
||||||
|
"""
|
||||||
|
# 检查环境变量
|
||||||
|
env_value = os.getenv('SHUIDROP_MULTI_INSTANCE')
|
||||||
|
if env_value is not None:
|
||||||
|
# 0, false, False, no, No → 生产模式
|
||||||
|
if env_value.lower() in ('0', 'false', 'no'):
|
||||||
|
return False
|
||||||
|
# 1, true, True, yes, Yes → 测试模式
|
||||||
|
if env_value.lower() in ('1', 'true', 'yes'):
|
||||||
|
return True
|
||||||
|
|
||||||
|
# 使用配置文件值 (如果不做设置我们可以直接用编码变量进行控制是否可以允许多实例的方式运行)
|
||||||
|
return MULTI_INSTANCE_MODE
|
||||||
|
|
||||||
# 平台特定配置
|
# 平台特定配置
|
||||||
PLATFORMS = {
|
PLATFORMS = {
|
||||||
"JD": {
|
"JD": {
|
||||||
|
|||||||
8
main.py
8
main.py
@@ -145,14 +145,20 @@ class LoginWindow(QMainWindow):
|
|||||||
# noinspection PyUnresolvedReferences
|
# noinspection PyUnresolvedReferences
|
||||||
self.token_input.returnPressed.connect(self.login) # 表示回车提交
|
self.token_input.returnPressed.connect(self.login) # 表示回车提交
|
||||||
self.token_input.setMinimumHeight(34) # 最小输入框高度
|
self.token_input.setMinimumHeight(34) # 最小输入框高度
|
||||||
# 预填已保存的令牌(如果存在)
|
# 🔥 根据配置决定是否自动加载token
|
||||||
|
# 生产模式:自动加载保存的token(方便用户)
|
||||||
|
# 测试模式:不加载,避免多实例冲突
|
||||||
|
if not config.is_multi_instance_mode():
|
||||||
try:
|
try:
|
||||||
from config import get_saved_token
|
from config import get_saved_token
|
||||||
saved = get_saved_token()
|
saved = get_saved_token()
|
||||||
if saved:
|
if saved:
|
||||||
self.token_input.setText(saved)
|
self.token_input.setText(saved)
|
||||||
|
print("[INFO] 生产模式:已自动加载保存的token")
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
else:
|
||||||
|
print("[INFO] 测试模式:不自动加载token,支持多实例运行")
|
||||||
|
|
||||||
token_layout.addWidget(token_label)
|
token_layout.addWidget(token_label)
|
||||||
token_layout.addWidget(self.token_input)
|
token_layout.addWidget(self.token_input)
|
||||||
|
|||||||
Reference in New Issue
Block a user