优化flask日志报错问题。优化tidevice运行报错问题

This commit is contained in:
2025-09-15 21:58:47 +08:00
parent 155f11de91
commit 824cff5ab6
5 changed files with 76 additions and 20 deletions

6
.idea/workspace.xml generated
View File

@@ -6,8 +6,10 @@
<component name="ChangeListManager">
<list default="true" id="eceeff5e-51c1-459c-a911-d21ec090a423" name="Changes" comment="20250904-初步功能已完成">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Module/FlaskSubprocessManager.py" beforeDir="false" afterPath="$PROJECT_DIR$/Module/FlaskSubprocessManager.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Utils/DevDiskImageDeployer.py" beforeDir="false" afterPath="$PROJECT_DIR$/Utils/DevDiskImageDeployer.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Module/FlaskService.py" beforeDir="false" afterPath="$PROJECT_DIR$/Module/FlaskService.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/build-tidevice.bat" beforeDir="false" afterPath="$PROJECT_DIR$/build-tidevice.bat" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/iproxy/tidevice.exe" beforeDir="false" afterPath="$PROJECT_DIR$/resources/iproxy/tidevice.exe" afterDir="false" />
<change beforePath="$PROJECT_DIR$/tidevice_entry.py" beforeDir="false" afterPath="$PROJECT_DIR$/tidevice_entry.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -61,27 +61,66 @@ def start_socket_listener():
print(f"[INFO] Socket listener started on port {port}, waiting for connections...")
while True:
try:
LogManager.info(f"[INFO] Waiting for a new connection on port {port}...")
print(f"[INFO] Waiting for a new connection on port {port}...")
conn, addr = s.accept()
LogManager.info(f"[INFO] Connection accepted from: {addr}")
print(f"[INFO] Connection accepted from: {addr}")
LogManager.info(f"[INFO] Connection from {addr}")
except Exception as e:
LogManager.error(f"[ERROR] accept 失败: {e}")
continue
raw_data = conn.recv(1024).decode('utf-8').strip()
LogManager.info(f"[INFO] Raw data received: {raw_data}")
print(f"[INFO] Raw data received: {raw_data}")
data = json.loads(raw_data)
LogManager.info(f"[INFO] Parsed data: {data}")
print(f"[INFO] Parsed data: {data}")
dataQueue.put(data)
except Exception as conn_error:
LogManager.error(f"[ERROR]连接处理失败: {conn_error}")
print(f"[ERROR]连接处理失败: {conn_error}")
# 独立线程处理单条连接,避免单客户端异常拖垮监听线程
threading.Thread(target=_handle_conn, args=(conn, addr), daemon=True).start()
# while True:
# try:
# LogManager.info(f"[INFO] Waiting for a new connection on port {port}...")
# print(f"[INFO] Waiting for a new connection on port {port}...")
# conn, addr = s.accept()
# LogManager.info(f"[INFO] Connection accepted from: {addr}")
# print(f"[INFO] Connection accepted from: {addr}")
#
# raw_data = conn.recv(1024).decode('utf-8').strip()
# LogManager.info(f"[INFO] Raw data received: {raw_data}")
# print(f"[INFO] Raw data received: {raw_data}")
#
# data = json.loads(raw_data)
# LogManager.info(f"[INFO] Parsed data: {data}")
# print(f"[INFO] Parsed data: {data}")
# dataQueue.put(data)
# except Exception as conn_error:
# LogManager.error(f"[ERROR]连接处理失败: {conn_error}")
# print(f"[ERROR]连接处理失败: {conn_error}")
except Exception as e:
LogManager.error(f"[ERROR]Socket服务启动失败: {e}")
print(f"[ERROR]Socket服务启动失败: {e}")
def _handle_conn(conn: socket.socket, addr):
try:
with conn:
# 1. 循环收包直到拿到完整 JSON
buffer = ""
while True:
data = conn.recv(1024)
if not data: # 对端关闭
break
buffer += data.decode('utf-8', errors='ignore')
# 2. 尝试切出完整 JSON简单按行也可按长度头、分隔符
while True:
line, sep, buffer = buffer.partition('\n')
if not sep: # 没找到完整行
break
line = line.strip()
if not line: # 空行跳过
continue
try:
obj = json.loads(line)
except json.JSONDecodeError as e:
LogManager.warning(f"[WARN] 非法 JSON 丢弃: {line[:100]} {e}")
continue
# 3. 收到合法数据,塞进队列
dataQueue.put(obj)
LogManager.info(f"[INFO] 收到合法消息: {obj}")
except Exception as e:
LogManager.error(f"[ERROR] 连接处理异常: {e}")
# 在独立线程中启动Socket服务
listener_thread = threading.Thread(target=start_socket_listener, daemon=True)

View File

@@ -6,4 +6,4 @@ pyinstaller -F -n tidevice ^
--collect-all tidevice ^
--noconsole ^
--add-data="C:\Users\milk\AppData\Local\Programs\Python\Python312\Lib\site-packages\tidevice;tidevice" ^
tidevice_entry.py
tidevice_entry.py

Binary file not shown.

View File

@@ -1,3 +1,18 @@
# from tidevice.__main__ import main
# if __name__ == '__main__':
# main()
# tidevice_entry.py
import sys, traceback, os
from tidevice.__main__ import main
if __name__ == '__main__':
main()
if __name__ == "__main__":
try:
main()
except Exception:
# 把 traceback 写到日志文件,但**不输出到控制台**
with open(os.path.expanduser("~/tidevice_crash.log"), "a", encoding="utf-8") as f:
traceback.print_exc(file=f)
# 静默退出,**返回码 1**(父进程只认 returncode
sys.exit(1)