BodyBalanceEvaluation/backend/test_socketio_minimal.py
2025-08-13 14:17:50 +08:00

112 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
最小化SocketIO测试脚本
用于诊断PyInstaller打包后的SocketIO初始化问题
"""
import sys
import os
import traceback
print(f"Python版本: {sys.version}")
print(f"工作目录: {os.getcwd()}")
print(f"Python路径: {sys.path[:3]}...") # 只显示前3个路径
print("="*50)
# 测试基础模块导入
try:
import threading
print("✓ threading模块可用")
except ImportError as e:
print(f"✗ threading模块不可用: {e}")
try:
import eventlet
print("✓ eventlet模块可用")
except ImportError as e:
print(f"✗ eventlet模块不可用: {e}")
try:
import gevent
print("✓ gevent模块可用")
except ImportError as e:
print(f"✗ gevent模块不可用: {e}")
print("="*50)
# 测试Flask导入
try:
from flask import Flask
print("✓ Flask导入成功")
except ImportError as e:
print(f"✗ Flask导入失败: {e}")
sys.exit(1)
# 测试SocketIO导入
try:
from flask_socketio import SocketIO
print("✓ SocketIO导入成功")
except ImportError as e:
print(f"✗ SocketIO导入失败: {e}")
sys.exit(1)
print("="*50)
# 测试engineio异步驱动
try:
import engineio.async_drivers.threading
print("✓ engineio.async_drivers.threading可用")
except ImportError as e:
print(f"✗ engineio.async_drivers.threading不可用: {e}")
try:
import engineio.async_drivers.eventlet
print("✓ engineio.async_drivers.eventlet可用")
except ImportError as e:
print(f"✗ engineio.async_drivers.eventlet不可用: {e}")
try:
import engineio.async_drivers.gevent
print("✓ engineio.async_drivers.gevent可用")
except ImportError as e:
print(f"✗ engineio.async_drivers.gevent不可用: {e}")
print("="*50)
# 创建Flask应用
app = Flask(__name__)
app.config['SECRET_KEY'] = 'test-key'
print("测试SocketIO初始化...")
# 测试1: 不指定async_mode
print("\n1. 测试自动检测async_mode:")
try:
socketio_auto = SocketIO(app, cors_allowed_origins='*')
print(f"✓ 自动检测成功,使用模式: {socketio_auto.async_mode}")
except Exception as e:
print(f"✗ 自动检测失败: {e}")
print(f"错误详情: {traceback.format_exc()}")
# 测试2: 明确指定threading模式
print("\n2. 测试threading模式:")
try:
socketio_threading = SocketIO(app, cors_allowed_origins='*', async_mode='threading')
print(f"✓ threading模式成功使用模式: {socketio_threading.async_mode}")
except Exception as e:
print(f"✗ threading模式失败: {e}")
print(f"错误详情: {traceback.format_exc()}")
# 测试3: 明确指定eventlet模式
print("\n3. 测试eventlet模式:")
try:
socketio_eventlet = SocketIO(app, cors_allowed_origins='*', async_mode='eventlet')
print(f"✓ eventlet模式成功使用模式: {socketio_eventlet.async_mode}")
except Exception as e:
print(f"✗ eventlet模式失败: {e}")
print(f"错误详情: {traceback.format_exc()}")
print("\n" + "="*50)
print("测试完成!")
input("按回车键退出...")