zoukankan      html  css  js  c++  java
  • flask_13_1:使用 supervisor 管理进程

    本文转载自:

    (1) 使用 supervisor 管理进程

    (2)安装使用supervisor来启动服务

    (3)supervisor用法

    相比之前的博客,这一篇博客讲述的更加清晰简单。

    使用 supervisor 管理进程

    Supervisor是一个用 Python写的进程管理工具,可以很方便的用来启动、重启、关闭进程。除了对单个进程的控制,还可以同时启动、关闭多个进程,可以很方便的控制那些需要长期运行的进程,比如需要在服务器上长期运行的爬虫之类,会在程序出错以后自动重启。

    1.安装

    ubuntu下apt安装

    sudo apt install supervisor
    

    pip安装方式

    sudo pip install supervisor
    

    2.配置

    创建配置文件
    supervisor提供了一个快速产生配置文件的方法

    echo_supervisord_conf > /etc/supervisord.conf
    

    如果没有root权限可以使用

    echo_supervisord_conf > supervisord.conf
    

    在当前目录产生,然后用supervisor -c supervisord.conf来启动服务
    查看 supervisord 是否在运行:

    ps -aux | grep supervisord
    

    3.应用配置

    至此,supervisor已经安装完成,下面需要将应用添加进去,可以在刚刚的生成文件中直接添加命令,但是不推荐这么做,推荐使用以下的做法。
    supervisor.conf中取消注释掉以下命令(一般位于结尾)

    ;[include]
    ;files = relative/directory/*.ini
    

    改为

    [include]
    files = /etc/supervisor/*.ini
    

    /etc目录下创建supervisor文件夹,在其下建立program.ini

    [program:serialrecv]
    directory = /home/jiang/program ; 程序的启动目录
    command = python serialrecv.py  ; 运行的指令
    autostart = true     ; 在 supervisord 启动的时候也自动启动
    startsecs = 5        ; 启动 5 秒后没有异常退出,就当作已经正常启动了
    autorestart = true   ; 程序异常退出后自动重启
    startretries = 3     ; 启动失败自动重试次数,默认是 3
    user = root          ; 用哪个用户启动
    redirect_stderr = true  ; 把 stderr 重定向到 stdout,默认 false
    stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
    stdout_logfile_backups = 20     ; stdout 日志文件备份数
    ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
    stdout_logfile = /data/logs/usercenter_stdout.log
    
    ; 可以通过 environment 来添加需要的环境变量,一种常见的用法是修改 PYTHONPATH
    ; environment=PYTHONPATH=$PYTHONPATH:/path/to/somewhere
    

    启动supervisor

    sudo supervisord
    

    监控应用运行情况

    sudo supervisorctl
    

    显示如下界面

    supdervisor>
    

    运行status可以看到应用运行状态,start <program name>可以启动应用,stop <program name>停止应用,start allstop all可以启动和停止所有应用。

    4.问题

    1.可能会遇到unix:///tmp/supervisor.sock not found,重新启动supervisordsudo supervisord即可
    2.无法开机启动
    /etc/rc.local添加启动命令sudo supervisordexit 0之前即可。

     
     
    0人点赞
     
     


    作者:Pokerpoke
    链接:https://www.jianshu.com/p/744f7f235a92
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    SQL 在数据库中查找包含指定关键字的存储过程或函数
    根据名称查找存储过程或函数
    根据最后修改时间查找存储过程或函数
    SQL 数据过度事务模板
    Feeling something wrong
    发布一个倒计时软件(C# 开源)
    SpringBoot中的配置文件信息加密
    springboot中mysql连接配置
    React学习2_运行项目
    React学习0_文章目录
  • 原文地址:https://www.cnblogs.com/hailin2018/p/13591332.html
Copyright © 2011-2022 走看看