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

Flask开发服务器为何可处理远超uWSGI的高并发请求?

Flask开发服务器为何能处理高并发请求

测试代码

from flask import Flask
import time

app = Flask(__name__)


@app.route('/test_speed', methods=['GET'])
def test_speed():
    time.sleep(3)
    return 'Blah'

核心原因分析

Flask开发服务器(底层由Werkzeug实现)在Flask 2.0及之后版本默认启用多线程模式:

  • 启动开发服务器时,会创建主线程管理连接,同时为每个请求分配独立的工作线程处理。
  • 你的测试代码里time.sleep(3)属于阻塞IO操作,线程执行到sleep时会释放Python的GIL(全局解释器锁),让其他线程可以正常运行。因此1000个请求的sleep操作可以同时进行,最终几乎在3秒左右全部完成。

而你使用的uWSGI默认是单线程多进程模式:

  • 配置的8个worker进程,每个进程同一时间只能处理一个请求,sleep期间进程会被完全阻塞,无法处理其他请求。所以1000个请求需要分ceil(1000/8)批次处理,总耗时就是批次数量乘以3秒。

补充说明

  1. Flask开发服务器的多线程仅为开发便利设计,绝对不能用于生产环境,它在稳定性、负载能力和容错性上远不如uWSGI、Gunicorn这类生产级服务器。
  2. 若想让uWSGI实现类似的并发效果,可以通过配置--threads参数(例如uwsgi --http :5000 --wsgi-file app.py --workers 8 --threads 100),让每个worker进程开启多个线程,这样单个worker就能同时处理多个阻塞IO请求,整体并发能力会显著提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:17:05