Supervisor如何实现高效Python进程管理?

2026-04-11 05:142阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1250个文字,预计阅读时间需要5分钟。

Supervisor如何实现高效Python进程管理?

Supervisor 是一款 Python 开发的进程管理工具,允许用户监视和控制 Linux 上的进程。它可以将普通命令行进程转换为后台守护进程,并在异常退出时自动重启。

一、简介

Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启
详细介绍查阅:Supervisor Introduction

二、安装

Supervisor 支持 Linux 和 Mac,不支持 Windows
本文系统为: centos,supervisor==4.2.4

pip3 install supervisor

安装完成后,在Python bin目录下面会有这样几个文件。

ls /usr/local/Python38/bin echo_supervisord_conf supervisorctl supervisord

:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。

三、创建配置文件
  1. 首先建个目录,存放配置文件:mkdir supervisord

echo_supervisord_conf > supervisord/supervisord.conf

若报错 -bash: /etc/supervisord.conf: Permission denied,需要切换到 root用户。

  1. 创建子进程配置文件路径

mkdir -p supervisor/conf.d

后面我们的任务,我们想把它作为守护进程,都需要一个配置文件,我们把这些配置文件放在conf.d目录下面。

  1. 修改配置文件

vim supervisord/supervisord.conf

将最后一部分改为

[include] # 因为我这里是放在root用户目录下,也可以放其它目录 files=/root/supervisord/conf.d/*.conf 四、初试

  1. 启动 supervisord

supervisord -c supervisord/supervisord.conf

这样就把supervisord启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。

查看版本

supervisord -v

  1. 编写简单的 Shell 脚本

vim supervisord/test.sh

内容如下

#!/bin/bash while : do echo `date '+%Y-%m-%d %H:%m:%S'` sleep 1 done

简单运行,Ctrl + C 退出

  1. 创建子进程配置文件

vim supervisor/conf.d/test.conf

test.conf内容如下:

[program:test] command=sh /root/supervisord/test.sh priority=999 ; 相对启动优先级,数值越小越优先,默认为999 autostart=true ; 在supervisor启动时自动启动,默认为true autorestart=true ; 在意外退出时重新启动,默认为true startsecs=10 ; 子进程启动多少秒后状态为running则认为启动成功,默认为1 startretries=3 ; 尝试启动的最大次数,默认为3 exitcodes=0,2 ; 进程的预期退出代码列表,默认为0 stopsignal=QUIT ; 终止进程的信号,默认为TERM stopwaitsecs=10 ; 在SIGKILL之前等待的最大秒数,默认为10 user=root ; 在某用户下设置uid来启动程序,默认不切换用户 redirect_stderr=true ; 是否重定向stdout和stderr,默认为false stdout_logfile=/tmp/supervisor.stdout.log ; stdout的输出文件,默认为AUTO stdout_logfile_maxbytes=50MB ; stdout最大文件大小,默认为50MB stdout_logfile_backups=10 ; stdout文件备份数,设为0则不备份,默认为10

其实只需要配置3个参数,其它不用管:

  • command=sh /root/supervisord/test.sh: 我们的子进程启动命令;
  • stdout_logfile=/tmp/supervisor.stdout.log: 日志;
  • program:test:进程名为test,如果进程哪一天想停止启动等,需要进程名;

目前文件目录结构是这样的:

yum install tree tree supervisord supervisord ├── conf.d │ └── test.conf ├── supervisord.conf └── test.sh

  1. 重新读取配置并更新子进程

因为我们的supervisord已经启动了,可以通过ps -ef | grep supervisord.conf查看。添加了子进程配置文件,需要把它重新加载进来:

先进入supervisord目录: cd supervisord,否则执行下面命令会有问题。

supervisorctl reread

再次查看进程状态

supervisorctl status

结果:

test RUNNING pid 30278, uptime 1:29:41

名为test的这个进程已经作为守护进程在后台运行,我们来kill掉他:

kill 30278

再执行supervisorctl status,会发现状态立马由starting,不一会变成running,那么supervisord的作用已经很明显了,可以自动帮我们自动监控任务。

Supervisor如何实现高效Python进程管理?

:对于子进程的添加、删除、启动、停止相关命令,见附录。

五、Web 界面

web界面没多大用处,就是如果想启动、暂停进程是,不需要敲命令而已。

vim supervisord.conf

取消注释

[inet_www.1234xp.com 复制请保留原URL】

本文共计1250个文字,预计阅读时间需要5分钟。

Supervisor如何实现高效Python进程管理?

Supervisor 是一款 Python 开发的进程管理工具,允许用户监视和控制 Linux 上的进程。它可以将普通命令行进程转换为后台守护进程,并在异常退出时自动重启。

一、简介

Supervisor 是一款 Python 开发的进程管理系统,允许用户监视和控制 Linux 上的进程,能将一个普通命令行进程变为后台守护进程,异常退出时能自动重启
详细介绍查阅:Supervisor Introduction

二、安装

Supervisor 支持 Linux 和 Mac,不支持 Windows
本文系统为: centos,supervisor==4.2.4

pip3 install supervisor

安装完成后,在Python bin目录下面会有这样几个文件。

ls /usr/local/Python38/bin echo_supervisord_conf supervisorctl supervisord

:由于python bin目录是加入了环境变量,所以可以直接执行这几个文件。

三、创建配置文件
  1. 首先建个目录,存放配置文件:mkdir supervisord

echo_supervisord_conf > supervisord/supervisord.conf

若报错 -bash: /etc/supervisord.conf: Permission denied,需要切换到 root用户。

  1. 创建子进程配置文件路径

mkdir -p supervisor/conf.d

后面我们的任务,我们想把它作为守护进程,都需要一个配置文件,我们把这些配置文件放在conf.d目录下面。

  1. 修改配置文件

vim supervisord/supervisord.conf

将最后一部分改为

[include] # 因为我这里是放在root用户目录下,也可以放其它目录 files=/root/supervisord/conf.d/*.conf 四、初试

  1. 启动 supervisord

supervisord -c supervisord/supervisord.conf

这样就把supervisord启动了,我们接下来可以把我们的任务交给他去守护了,停止了会帮我们自动重启。

查看版本

supervisord -v

  1. 编写简单的 Shell 脚本

vim supervisord/test.sh

内容如下

#!/bin/bash while : do echo `date '+%Y-%m-%d %H:%m:%S'` sleep 1 done

简单运行,Ctrl + C 退出

  1. 创建子进程配置文件

vim supervisor/conf.d/test.conf

test.conf内容如下:

[program:test] command=sh /root/supervisord/test.sh priority=999 ; 相对启动优先级,数值越小越优先,默认为999 autostart=true ; 在supervisor启动时自动启动,默认为true autorestart=true ; 在意外退出时重新启动,默认为true startsecs=10 ; 子进程启动多少秒后状态为running则认为启动成功,默认为1 startretries=3 ; 尝试启动的最大次数,默认为3 exitcodes=0,2 ; 进程的预期退出代码列表,默认为0 stopsignal=QUIT ; 终止进程的信号,默认为TERM stopwaitsecs=10 ; 在SIGKILL之前等待的最大秒数,默认为10 user=root ; 在某用户下设置uid来启动程序,默认不切换用户 redirect_stderr=true ; 是否重定向stdout和stderr,默认为false stdout_logfile=/tmp/supervisor.stdout.log ; stdout的输出文件,默认为AUTO stdout_logfile_maxbytes=50MB ; stdout最大文件大小,默认为50MB stdout_logfile_backups=10 ; stdout文件备份数,设为0则不备份,默认为10

其实只需要配置3个参数,其它不用管:

  • command=sh /root/supervisord/test.sh: 我们的子进程启动命令;
  • stdout_logfile=/tmp/supervisor.stdout.log: 日志;
  • program:test:进程名为test,如果进程哪一天想停止启动等,需要进程名;

目前文件目录结构是这样的:

yum install tree tree supervisord supervisord ├── conf.d │ └── test.conf ├── supervisord.conf └── test.sh

  1. 重新读取配置并更新子进程

因为我们的supervisord已经启动了,可以通过ps -ef | grep supervisord.conf查看。添加了子进程配置文件,需要把它重新加载进来:

先进入supervisord目录: cd supervisord,否则执行下面命令会有问题。

supervisorctl reread

再次查看进程状态

supervisorctl status

结果:

test RUNNING pid 30278, uptime 1:29:41

名为test的这个进程已经作为守护进程在后台运行,我们来kill掉他:

kill 30278

再执行supervisorctl status,会发现状态立马由starting,不一会变成running,那么supervisord的作用已经很明显了,可以自动帮我们自动监控任务。

Supervisor如何实现高效Python进程管理?

:对于子进程的添加、删除、启动、停止相关命令,见附录。

五、Web 界面

web界面没多大用处,就是如果想启动、暂停进程是,不需要敲命令而已。

vim supervisord.conf

取消注释

[inet_www.1234xp.com 复制请保留原URL】