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

使用uWSGI部署Flask应用时启动2个进程而非1个的问题

解决uWSGI启动Flask应用时出现两个进程的问题

我来帮你理清这个问题——你用这条命令启动Flask应用:

uwsgi --http :8080 --wsgi-file app.py --callable app

预期只跑1个uWSGI进程,但实际出现了两个,从你的启动日志和ps aux结果都能看出来。

问题原因

你看到的第二个进程(pid 19721)是uWSGI的HTTP路由辅助进程。当你使用--http参数时,uWSGI会启动一个独立的进程来处理HTTP协议的解析,然后把请求转发给后面的worker进程(也就是pid 19720的那个)。这是--http参数的默认行为,目的是让worker专注于处理应用逻辑,而把HTTP层面的处理交给专门的进程。

你看启动日志里的这句:

spawned uWSGI http 1 (pid: 19721)

就是这个辅助进程被创建的记录,而后面的spawned uWSGI worker 1 (and the only) (pid: 19720, cores: 1)才是真正运行Flask应用的worker进程。

解决方案

如果你确实只需要一个进程运行,最推荐的调整方式是:

  • 改用--http-socket参数
    这个参数会让worker进程直接监听HTTP端口并处理HTTP请求,不会额外生成HTTP路由进程。修改后的命令如下:
    uwsgi --http-socket :8080 --wsgi-file app.py --callable app
    
    这种方式逻辑更直接,完全符合你单进程运行的需求。

验证

用修改后的命令启动后,再执行ps aux | grep uwsgi,你就会看到只有一个uWSGI进程在运行,和你的预期一致。

内容的提问来源于stack exchange,提问作者A. Makarevich

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:12:47