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

Flask-SocketIO多用户环境下线程模块持续刷新数据导致页面崩溃问题求助

Flask-SocketIO多用户环境下线程模块持续刷新数据导致页面崩溃问题求助

大家好,我第一次用Flask做后端开发,需求是让网页上的数据每200秒自动更新一次。所以我在每个数据获取模块里都用了while True配合time.sleep(200)的循环,然后通过SocketIO来推送数据到前端。

我在连接事件里启动了一堆后台线程,代码是这样的:

@socketio.on('connect')
def handle_connect():
    threading.Thread(target=get_realAlarm_data,daemon=True).start()
    threading.Thread(target=get_nrp_data,daemon=True).start()
    threading.Thread(target=get_groupwip_data,daemon=True).start()
    threading.Thread(target=get_pm_data,daemon=True).start()
    threading.Thread(target=process_eqpstatus_data,daemon=True).start()
    threading.Thread(target=mark_count, daemon=True).start()
    for module_name in MODULES:
        threading.Thread(target=send_data, args=(module_name,),daemon=True).start()

但最近后台日志发现了问题:有时候程序会陷入不停刷新的死循环,紧接着我的前端页面就直接崩溃挂掉了。

拿get_groupwip_data这个模块举例子吧,其他模块的逻辑都差不多,核心结构大概是这样的:

def get_groupwip_data():
    while True:
        # 这里是从数据库/其他数据源获取数据的逻辑
        groupwip_data = get_latest_groupwip()
        # 通过SocketIO向前端推送更新
        socketio.emit('groupwip_update', groupwip_data)
        time.sleep(200)

我现在有点懵,不知道问题到底出在哪:是我创建的线程太多了?还是while True加sleep的这种定时方式本身就有问题?或者是多用户连接的时候,每个用户触发connect事件都会启动一轮新线程,导致服务器资源被耗尽?有没有大佬能帮我分析下问题根源,或者给个更靠谱的实现方案呀?

备注:内容来源于stack exchange,提问作者alblmb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:28:15