supervisor 和Python的multiprocessing使用问题
#1 环境
Ubuntu 16.04
Python 3.8.1
#2 需求
- 使用supervisor管理Python程序时, 当Python程序中使用multiprocessing模块,supervisor的stop和restart指令只会杀死主进程,子进程会残留下来
#3 解决 Python多进程和supervisor问题
killasgroup可以说是专门适配了Python的multiprocessing模块,如果配置了stopasgroup=true,那么killasgroup也会默认为true,所以我们只需要配置stopasgroup=true即可,注意stopasgroup和killasgroup发送的信号类型不同。
配置例子 :
[group:multiprocesstest]
programs=multiprocess
[program:multiprocess]
command=python3 /home/cox/work/test/multiprocess_suspend/multiprocess_suspend.py
directory=/home/cox
user=cox
autorestart=true
redirect_stderr=true
stopasgroup=true