112 lines
3.0 KiB
Python
112 lines
3.0 KiB
Python
#!/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("按回车键退出...") |