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

如何在Flask的WSGIServer中启用/实现多线程

在WSGIServer中为Flask启用多线程以应对高负载

你的问题很典型——默认情况下,werkzeug的WSGIServer是单线程运行的,同一时间只能处理一个请求,高负载下请求排队堆积,自然就会导致响应变慢。好在启用多线程非常简单,只要给WSGIServer加个参数就行。

直接修改你的main函数,在初始化WSGIServer的时候添加threaded=True参数:

def main():
    """Main entry point of the app."""
    try:
        # 启用多线程模式,提升并发处理能力
        http_server = WSGIServer(('0.0.0.0', 8084), app, log=logging, error_log=logging, threaded=True)
        http_server.serve_forever()
    except Exception as exc:
        logger.error(exc.message)
        logger.exception(traceback.format_exc())
    finally:
        # 这里可以放置资源清理逻辑,比如关闭数据库连接、释放文件句柄等
        pass

一些关键说明:

  • threaded=True会让WSGIServer启动多个工作线程来处理请求,这样就能同时响应多个用户的请求,缓解高负载下的排队问题。
  • 一定要注意线程安全!如果你的Flask应用里有全局变量、未加锁的共享资源操作(比如全局计数器、未同步的数据库连接),多线程环境下可能会出现数据竞争、结果不一致的问题。如果有这类代码,记得加锁(比如用threading.Lock)或者重构为线程安全的实现。
  • 如果后续负载进一步提升,多线程不够用的话,还可以考虑启用多进程(设置processes=N参数,N为进程数),不过多线程已经能解决大部分中等规模的负载问题了。

另外提一句,生产环境中更推荐用Gunicorn、uWSGI这类专业的WSGI服务器,它们的并发管理、稳定性和性能都比自带的WSGIServer更强,但如果暂时想快速优化现有代码,上面的修改就能立竿见影。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:54:44