修改停止线程的bug

This commit is contained in:
2025-11-07 16:31:18 +08:00
parent fa539aef73
commit e5a9ccdcb1
3 changed files with 17 additions and 9 deletions

View File

@@ -233,8 +233,14 @@ def start_socket_listener():
pass
# 独立线程启动 Socket 服务 + 看门狗
listener_thread = threading.Thread(target=start_socket_listener, daemon=True)
listener_thread.start()
def bootstrap_server_side_effects():
# 仅在真正的 Flask 进程里启动副作用监听、定时器、MQ 等)
listener_thread = threading.Thread(target=start_socket_listener, daemon=True)
listener_thread.start()
# 获取app
def get_app():
return app
# ============ API 路由 ============
@app.route('/deviceList', methods=['GET'])
@@ -836,5 +842,5 @@ def restartTikTok():
return ResultData(data="").toJson()
if __name__ == '__main__':
# 注意:这里建议 debug=False避免未来有人改成 use_reloader=True 导致多进程
app.run("0.0.0.0", port=5000, debug=False, use_reloader=False, threaded=True)
# 只有“明确是 Flask 进程”才跑副作用(通过 APP_ROLE 控制)
app.run("0.0.0.0", port=5000, debug=False, use_reloader=False, threaded=True)

View File

@@ -3,7 +3,6 @@
import os
import sys
from pathlib import Path
from Utils.LogManager import LogManager
import logging
@@ -30,11 +29,11 @@ LOG_DIR.mkdir(exist_ok=True) # 确保 log 目录存在
print(f"日志目录: {LOG_DIR}")
def _run_flask_role():
from Module import FlaskService
from Module.FlaskService import get_app, bootstrap_server_side_effects
print("Flask Pid:", os.getpid())
port = int(os.getenv("FLASK_COMM_PORT", "34566")) # 固定端口的兜底仍是 34567
app_factory = getattr(FlaskService, "create_app", None)
app = app_factory() if callable(app_factory) else FlaskService.app
app = get_app()
bootstrap_server_side_effects()
app.run(host="0.0.0.0", port=port + 1, debug=False, use_reloader=False, threaded=False)
if "--role=flask" in sys.argv:
@@ -92,3 +91,4 @@ if __name__ == "__main__":
finally:
# 进程退出前记得把子进程关掉
manager.stop()

View File

@@ -453,6 +453,8 @@ class ScriptManager():
# 设置查找深度
session.appium_settings({"snapshotMaxDepth": 15})
session.appium_settings({"waitForQuiescence": False})
# 创建udid名称的目录
AiUtils.makeUdidDir(udid)
@@ -472,6 +474,7 @@ class ScriptManager():
# 循环条件。1、 循环关闭 2、 数据处理完毕
while not event.is_set():
print(f"关注打招呼开始循环,设备是:{udid}")
session.appium_settings({"waitForQuiescence": False})
LogManager.method_info("=== 外层 while 新一轮 ===", "关注打招呼", udid)
if event.is_set():
@@ -1626,7 +1629,6 @@ class ScriptManager():
user_text = None
info_count += 1
print("当前页面的节点", session.source())
if user_text:
print("点击进入用户主页")