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

Flask运行10-15秒后崩溃,求助排查Messenger Bot生产环境问题

Messenger Bot 生产环境频繁重启(Broken Pipe错误)解决方案

嘿,我帮你梳理下问题根源和解决方案:你遇到的socket.error: [Errno 32] Broken pipe错误,本质是Flask自带的开发服务器完全不适合生产环境的高并发场景(每秒15-20次请求已经超出它的单线程处理能力了),当请求堆积导致连接被客户端提前关闭时,就会触发这个错误并导致程序崩溃。结合你不是Python开发者的情况,下面的方案都是简单易操作的:

1. 立刻替换Flask默认服务器为生产级服务器

Flask自带的app.run()是给开发调试用的,性能差、单线程,生产环境必须用Gunicorn这类专门的服务器:

  • 先安装Gunicorn(服务器上执行):
    pip install gunicorn
    
  • 用Gunicorn启动你的Bot,替换原来的python 你的脚本名.py命令:
    gunicorn -w 4 -b 0.0.0.0:5000 你的脚本文件名:app
    
    参数说明:
    • -w 4:启动4个工作进程(可以根据服务器CPU核心数调整,一般是核心数×2)
    • -b 0.0.0.0:5000:让外部能访问你的Bot
    • 你的脚本文件名:app:比如你的脚本叫bot.py,就写bot:app

2. 修复代码里的异常捕获逻辑

当前代码没处理网络类错误,导致Broken pipe直接崩溃程序。修改代码:

  • 首先在开头导入socket模块:
    import socket
    
  • 然后修改异常捕获块:
    except IOError as (errno, strerror):
        print "I/O error({0}): {1}".format(errno, strerror)
    except ValueError:
        print "Could not convert data to an integer."
    except socket.error as e:
        # 专门处理Broken pipe这类网络错误,避免程序崩溃
        if e.errno == 32:
            print "Broken pipe error occurred, ignoring..."
        else:
            print "Socket error:", e
    except Exception as e:
        print "Unexpected error:", sys.exc_info()[0]
        # 不要直接raise,否则会崩溃,只打印日志即可
    

3. 优化PM2配置,减少不必要的重启

调整PM2的配置文件(创建一个ecosystem.config.js文件),避免一遇到小错误就重启:

module.exports = {
  apps : [{
    name: "messenger-bot",
    script: "gunicorn",
    args: "-w 4 -b 0.0.0.0:5000 你的脚本文件名:app",
    autorestart: true,
    restart_delay: 2000, // 重启前延迟2秒,避免频繁重启
    max_memory_restart: "1G", // 内存超过1G时再重启
    env: {
      NODE_ENV: "production"
    }
  }]
};

然后用PM2启动这个配置:

pm2 start ecosystem.config.js

额外建议:优化消息发送逻辑(可选)

如果请求量持续很高,你可以把bot.send_text_message这类同步操作改成异步的,避免阻塞请求处理。不过这个稍微复杂,如果你前面的步骤已经解决问题,可以先不做。

按照上面的步骤操作后,你的Bot应该能稳定运行,不会再频繁重启了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:52:57