Skip to content

Commit ffecb7e

Browse files
committed
修复wxautox库加载问题
1 parent 41fa142 commit ffecb7e

File tree

6 files changed

+173
-70
lines changed

6 files changed

+173
-70
lines changed

app/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ def create_app():
99
werkzeug_logger = logging.getLogger('werkzeug')
1010
werkzeug_logger.setLevel(logging.ERROR) # 只显示错误级别的日志
1111

12+
# 确保所有日志处理器立即刷新
13+
for handler in logging.getLogger().handlers:
14+
handler.setLevel(logging.DEBUG)
15+
handler.flush()
16+
1217
# 初始化微信相关配置
1318
from app.wechat_init import initialize as init_wechat
1419
init_wechat()
@@ -20,6 +25,11 @@ def create_app():
2025
app = Flask(__name__)
2126
app.config.from_object(Config)
2227

28+
# 配置Flask日志处理
29+
if not app.debug:
30+
# 在非调试模式下,禁用自动重载器
31+
app.config['USE_RELOADER'] = False
32+
2333
# 初始化限流器
2434
limiter = Limiter(
2535
app=app,

app/api/routes.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,26 @@ def before_request():
2121
g.start_time = time.time()
2222
# 记录请求信息,但不记录详细的请求头和请求体
2323
logger.info(f"收到请求: {request.method} {request.path}")
24+
# 确保日志立即刷新
25+
for handler in logger.logger.handlers:
26+
handler.flush()
27+
2428
# 只在开发环境下记录请求体,且不记录请求头
2529
if Config.DEBUG and request.method in ['POST', 'PUT', 'PATCH'] and request.is_json:
2630
logger.debug(f"请求体: {request.get_json()}")
31+
# 确保日志立即刷新
32+
for handler in logger.logger.handlers:
33+
handler.flush()
2734

2835
@api_bp.after_request
2936
def after_request(response):
3037
if hasattr(g, 'start_time'):
3138
duration = time.time() - g.start_time
3239
# 修改日志格式,确保API计数器能够正确识别 - 确保状态码周围有空格
3340
logger.info(f"请求处理完成: {request.method} {request.path} - 状态码: {response.status_code} - 耗时: {duration:.2f}秒")
41+
# 确保日志立即刷新
42+
for handler in logger.logger.handlers:
43+
handler.flush()
3444
return response
3545

3646
@api_bp.errorhandler(Exception)

app/app_ui.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,6 +1436,7 @@ def show_api_documentation(self):
14361436
def on_lib_change(self):
14371437
"""处理库选择变更"""
14381438
selected_lib = self.lib_var.get()
1439+
self.add_log(f"库选择变更: {selected_lib}")
14391440

14401441
# 检查所选库是否已安装
14411442
if selected_lib == "wxauto" and not self.check_wxauto_status():
@@ -1450,14 +1451,38 @@ def on_lib_change(self):
14501451

14511452
try:
14521453
# 加载当前配置
1454+
self.add_log(f"正在加载配置文件...")
14531455
config = config_manager.load_app_config()
1456+
self.add_log(f"当前配置: {config}")
14541457

14551458
# 更新库配置
1459+
old_lib = config.get('wechat_lib', 'wxauto')
14561460
config['wechat_lib'] = selected_lib
1461+
self.add_log(f"更新库配置: {old_lib} -> {selected_lib}")
14571462

14581463
# 保存配置
1464+
self.add_log(f"正在保存配置文件...")
14591465
config_manager.save_app_config(config)
14601466

1467+
# 验证配置是否成功保存
1468+
try:
1469+
new_config = config_manager.load_app_config()
1470+
saved_lib = new_config.get('wechat_lib', 'wxauto')
1471+
if saved_lib != selected_lib:
1472+
self.add_log(f"警告:配置保存后验证失败,期望值: {selected_lib},实际值: {saved_lib}")
1473+
messagebox.showwarning("配置验证", f"配置可能未正确保存,请检查配置文件权限")
1474+
else:
1475+
self.add_log(f"配置保存成功并验证通过: {saved_lib}")
1476+
except Exception as ve:
1477+
self.add_log(f"配置验证失败: {str(ve)}")
1478+
1479+
# 同时更新.env文件中的配置(作为备份)
1480+
try:
1481+
self.update_env_file('WECHAT_LIB', selected_lib)
1482+
self.add_log(f"已更新.env文件中的WECHAT_LIB配置")
1483+
except Exception as env_e:
1484+
self.add_log(f"更新.env文件失败: {str(env_e)}")
1485+
14611486
# 标记配置已修改
14621487
global CONFIG_MODIFIED
14631488
CONFIG_MODIFIED = True
@@ -1475,6 +1500,31 @@ def on_lib_change(self):
14751500
if self.api_running:
14761501
messagebox.showinfo("需要重启", "库已切换,需要重启服务才能生效")
14771502

1503+
def update_env_file(self, key, value):
1504+
"""更新.env文件中的配置"""
1505+
env_file = ".env"
1506+
lines = []
1507+
key_found = False
1508+
1509+
# 读取现有内容
1510+
if os.path.exists(env_file):
1511+
with open(env_file, "r", encoding="utf-8") as f:
1512+
lines = f.readlines()
1513+
1514+
# 更新或添加配置
1515+
for i, line in enumerate(lines):
1516+
if line.strip().startswith(f"{key}="):
1517+
lines[i] = f"{key}={value}\n"
1518+
key_found = True
1519+
break
1520+
1521+
if not key_found:
1522+
lines.append(f"{key}={value}\n")
1523+
1524+
# 写回文件
1525+
with open(env_file, "w", encoding="utf-8") as f:
1526+
f.writelines(lines)
1527+
14781528
# 这些方法已被移除,配置现在通过插件配置对话框进行管理
14791529

14801530
def start_api_service(self):

0 commit comments

Comments
 (0)