supervisor和Python多进程multiprocessing使用 子进程残留问题

文章目录

  • supervisor 和Python的multiprocessing使用问题
    • #1 环境
    • #2 需求
    • #3 解决 Python多进程和supervisor问题

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

你可能感兴趣的:(运维)