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

如何禁用mod_wsgi-express因终端调整触发SIG_WINCH导致的关闭?

解决mod_wsgi-express因终端窗口调整关闭的问题

这个问题确实是Apache默认处理SIG_WINCH信号导致的——当终端窗口大小变化时,系统会给Apache进程发送这个信号,而Apache默认会将其作为重启子进程/关闭服务器的触发信号。加上WSGIRestrictSignal默认限制了Python应用捕获SIGWINCH,常规的signal.signal调用自然失效。

这里有两种可行的解决方式,按需选择:

方式一:通过mod_wsgi-express命令行允许应用捕获信号

首先在启动服务器时,添加--allow-signal SIGWINCH参数,解除对该信号的限制:

mod_wsgi-express start-server your_app.py --allow-signal SIGWINCH

然后在你的Python应用代码开头添加信号忽略逻辑:

import signal

# 直接忽略SIGWINCH信号
signal.signal(signal.SIGWINCH, signal.SIG_IGN)

这样应用就能接管SIGWINCH信号的处理,Apache就不会因为窗口调整触发关闭了。

方式二:让Apache直接忽略SIGWINCH信号(无需修改应用代码)

如果不想改动Python代码,可以创建一个Apache配置文件(比如ignore_sigwinch.conf),内容如下:

SignalIgnore SIGWINCH

然后启动mod_wsgi-express时指定这个配置文件:

mod_wsgi-express start-server your_app.py --apache-config ignore_sigwinch.conf

这个配置会让Apache完全忽略SIG_WINCH信号,终端窗口大小变化时就不会触发任何服务器操作了。

两种方式都能解决问题,个人更推荐第二种,不需要侵入应用代码,配置更干净。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:32:04