You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决flask-socketio触发ValueError('Invalid async_mode specified')报错

问题原因
  • 核心错误是async_mode参数传入类型错误:flask-socketio的SocketIO构造函数中,async_mode参数需要接收字符串类型的异步模式标识,你当前直接传入了import的eventlet模块对象,不符合参数要求,导致初始化校验失败抛出Invalid async_mode specified错误
  • 后续的AttributeError: 'NoneType' object has no attribute 'eio'是连锁报错:因为socketio初始化失败,server属性未被正常赋值,调用run方法时访问不存在的属性抛出异常
修复方案
  1. 首先修正cell_data_api.py中SocketIO的初始化参数
    把async_mode=eventlet修改为async_mode='eventlet',改为传入字符串值即可。如果你没有其他逻辑用到from engineio.async_drivers import eventlet这个导入,可以直接删除该行。
    修复后的SocketIO初始化代码参考:
socketio = SocketIO(
    always_connect=True,
    logger=True,
    async_mode='eventlet',
    cookie=..., # 替换为你实际的配置值
    ping_timeout=... # 替换为你实际的配置值
)
  1. (可选适配测试环境)如果Bitbucket Pipeline的测试场景不需要完整的eventlet异步能力,可以根据环境变量动态切换async_mode,避免测试环境依赖问题:
import os
async_mode = 'eventlet' if os.getenv('APP_ENGINE', '') == 'TRUE' else 'threading'
socketio = SocketIO(
    always_connect=True,
    logger=True,
    async_mode=async_mode,
    # 其余配置保持不变
)
  1. (可选解决版本兼容问题)你当前依赖全部用通配符*,可能出现版本不匹配问题,建议固定兼容版本:
flask_socketio = "~=5.3.0"
python-engineio = "~=4.3.0"
python-socketio = "~=5.7.0"
eventlet = "~=0.33.0"

修改完成后重新部署测试即可解决报错。

内容的提问来源于stack exchange,提问作者Yan Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:06:08