Python中supervisor启动时报`ERROR (abnormal termination)`错误,但实际启动成功的原因是什么?
如题目说指,使用 supervisor 管理应用时,进行项目启动的或者重启的时候,偶尔会报报ERROR (abnormal termination)错误,然后实际上启动成功。这个有什么办法么?
Python中supervisor启动时报`ERROR (abnormal termination)`错误,但实际启动成功的原因是什么?
1 回复
这个报错通常是因为supervisor监控的进程在启动后立即退出,但退出状态码不是0(比如进程变成了守护进程或快速完成了任务)。supervisor会认为这是异常终止,但实际上你的程序可能已经在后台正常运行了。
最常见的情况是你的程序自己fork了守护进程然后主进程退出。supervisor看到主进程退出就报错,但其实子进程还在跑。
检查方法:
# 一个典型的会导致这个问题的例子
import time
import os
import sys
def main():
# 如果是守护进程模式
if os.fork():
sys.exit(0) # 父进程退出
# 子进程继续运行(实际的工作进程)
time.sleep(10)
print("实际工作完成")
if __name__ == '__main__':
main()
解决方案:
- 在supervisor配置中设置
stopasgroup=true和killasgroup=true - 或者修改你的程序,不要立即退出父进程
- 使用
startsecs参数给supervisor更长的等待时间
建议直接改supervisor配置试试。

