美文网首页
用supervisor管理python进程

用supervisor管理python进程

作者: 小玉1991 | 来源:发表于2021-06-29 21:32 被阅读0次

    supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启,但它不能管理原本就是daemon的进程。

    supervisor的安装和管理都非常方便,先要安装python和pip。
    安装python参考地址
    安装pip参考资料地址

    1. 安装

    pip install supervisor
    

    2. 生成配置文件

    安装好以后,需要生成一份配置文件

    echo_supervisord_conf > /etc/supervisord.conf
    

    3. 为每个进程单独配置

    你可以直接在/etc/supervisord.conf 里编写对任务控制的配置,更加合理的方法是在一个专门的文件夹中针对每一个进程进行配置,创建一个存储配置的目录

    mkdir /etc/supervisord.d/
    为每个程序编写一个配置文件,使得他们相互隔离,现在需要对/etc/supervisord.conf 进行修改以完成这个配置, 找到[include], 修改配置

    [include]
    files = /etc/supervisord.d/*.conf
    如下图


    修改配置

    4. 一份配置示例

    在/etc/supervisord.d/目录下新增一个conf文件


    conf文件

    内容例如:

    [program:nezha-proxy]
    directory = /root/nezha-proxy
    command = python3 app.py
    autostart = true
    autorestart = true
    user = root
    stdout_logfile = /root/log/pro_stdout.log
    

    参数说明:
    [program:project_name]
    directory = 工作目录
    command = 脚本的启动命令
    autostart = true
    autorestart = true
    user = loanward
    stdout_logfile = /data/log/pro_stdout.log
    project_name 必须是唯一的,否则将会出现错乱
    directory 填写你启动脚本时的工作目录,如果你使用脚本的绝对目录,那么directory可以不设置
    command是执行脚本的命令,不需要使用nohup让其变为后代进程,supervisor会自动将其变为后台进程
    autostart 配置为True, supervisor 启动时,任务跟随启动
    autorestart 配置为True, 进程不存在时会自动重启, 默认重启3次,想修改重启次数,可以配置startretries, 设置最多重启的次数
    user 设置启动任务时所用的用户,supervisor 有必要使用root账号启动,这样才有权限配置其他启动账号
    stdout_logfile 配置输出日志

    5. 启动supervisor

    supervisord -c /etc/supervisord.conf

    6. 使用supervisorctl 进行管理

    supervisorctl 是 supervisord 的一个命令行客户端工具,使用supervisorctl可以遍历的对进程进行管理,支持的命令如下

    supervisorctl status                         # 查看进程状态
    supervisorctl stop project_name              # 终止某个进程
    supervisorctl start project_name             # 启动某个进程
    supervisorctl restart project_name           # 重启某个进程
    supervisorctl reread                         # 更新配置,根据最新的配置启动程序,会启动已经运行的程序
    supervisorctl update                         # 更新配置,重启配置有变化的进程,不会重启那些配置没有变化
    

    相关文章

      网友评论

          本文标题:用supervisor管理python进程

          本文链接:https://www.haomeiwen.com/subject/iinkultx.html