• supervisord实例配置


    在supervisord初体验篇我们已经把supervisord搭建起来了,也了解了一些基本的使用方法
    supervisord初体验传送门

    下面我们就开始配置一个实际使用的实例程序

    supervisord常用配置参数

    参数 作用 示例
    process_name 程序的名字 testSupervisord
    user 程序启动的用户,默认是root root
    directory 程序启动的目录 /home/leon/projects/usercenter
    command 程序启动的命令 python3 test.py
    startsecs 启动 5 秒后没有异常退出,就当作已经正常启动了 5
    startretries 启动失败时候重试次数,默认3次 3
    autorestart 程序异常退出后自动重启 true
    autostart 在supervisord启动的时候一起启动 true
    redirect_stderr 把 stderr 重定向到 stdout,默认 false true
    stdout_logfile_maxbytes stdout 日志文件大小,默认 50MB 50MB
    stdout_logfile_backups stdout 日志文件备份数,默认10 2
    stderr_logfile 错误日志输出路径 /var/log/supervisor/progress.err.log
    stdout_logfile 正常日志输出路径 /var/log/supervisor/progress.out.log
    numprocs 启动的守护进程数量 3
    priority 守护进程的优先级 999
    umask 进程的权限 002
    environment 添加环境变量 environment=PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3

    注意!
    当你的numprocs大于1时:process_name表达式要写成:%(program_name)s_%(process_num)02d

    Python环境设置

    python的import机制,python中的模块site负责模块导入路径的添加(Append module search paths for third-party packages to sys.path)

    查看其main方法,其中有一个addusersitepackages的动作,是导入当前用户的module search paths

    进一步查看源码,是通过get_config_var('userbase')获取~/.local(sysconfig.py line 205),而~代表就是环境变量当前用户

    所以我们可以通过添加HOME环境变量来让python正确的找到模块导入路径

    使用supervisor出现ModuleNotFoundError错误时是因为sys.path未加载所需模块所在的路径,可以通过设置environment来指明所需模块的路径

    使用PYTHONPATH指明

    environment=PYTHONPATH=/home/user/.local/lib/python3.6/site-packages
    

    对于指定用户安装的python模块(pip install XXX --user 安装用户),也可以通过指定HOME来让python找到模块所在的路径:

    environment=HOME=/home/user
    

    实例

    下面是官方给出的一个实例

    [program:cat]
    command=/bin/cat
    process_name=%(program_name)s
    numprocs=1
    directory=/tmp
    umask=022
    priority=999
    autostart=true
    autorestart=unexpected
    startsecs=10
    startretries=3
    exitcodes=0
    stopsignal=TERM
    stopwaitsecs=10
    stopasgroup=false
    killasgroup=false
    user=chrism
    redirect_stderr=false
    stdout_logfile=/a/path
    stdout_logfile_maxbytes=1MB
    stdout_logfile_backups=10
    stdout_capture_maxbytes=1MB
    stdout_events_enabled=false
    stderr_logfile=/a/path
    stderr_logfile_maxbytes=1MB
    stderr_logfile_backups=10
    stderr_capture_maxbytes=1MB
    stderr_events_enabled=false
    environment=A="1",B="2"
    serverurl=AUTO
    

    参考文献:
    supervisord官方手册:http://supervisord.org/index.html

  • 相关阅读:
    VBA 的编写与执行
    C# eBook
    【转】Winfrom datagridview 打印
    jquery循序渐渐1
    C# 数据库备份及还原
    Asp.net调用RAR压缩 解压文件
    SQL Server 2005下的分页SQL
    优秀文档收藏
    动态传入“表名,字段名,字段类型,默认值”四个字符串,根据新的字段名称和类型来创表表结构
    一句话搞定生日提示
  • 原文地址:https://www.cnblogs.com/Jaryer/p/13644687.html
Copyright © 2020-2023  润新知