阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

Supervisor的简单使用2014-09-02 06:41

Supervisor文档:http://supervisord.org/index.html

Supervisor是一个进程管理工具,当进程中断的时候Supervisor能自动重新启动它。可以运行在各种类unix的机器上,不支持windows,Python编写,python版本大于2.4,不支持3。

安装:

$ sudo pip install supervisor

linux环境使用包管理工具安装可以直接开机启动哟,pip安装的主要自己配置才能开机启动。

sudo apt-get install supervisor
sudo service supervisor start

创建配置文件,运行echo_supervisord_conf可在终端打印配置文件示例(包管理安装的已经有了):

# echo_supervisord_conf > /etc/supervisord.conf

或者:$ echo_supervisord_conf |sudo tee /etc/supervisord.conf

按照/etc/supervisord.conf中;[program:theprogramname]下的示例添加自己的程序监控

[program:theprogramname] ;定义监控系统的名称
command=theprogramcmd ;重启进程的命令
autorstart=true ;是否自动启动
process_name=%(program_name)s ;进程名称,默认是程序名称
numprocs=1 ;进程数量
directory=/tmp ;路径
umask=022 ;掩码
priority=999 ;优先级,越大被开起的越早
autorestart=true ;自动重启
startsecs=10 ;启动等待时间(秒)
startretries=3 ;启动重试次数
stopsignal=TERM ;关闭信号
stopwaitsecs=10 ;关闭前等待时间
user=chrism ;监控用户权限
redirect_stderr=false ;重定向报错输出到stdout
stdout_logfile=/a/path ;输入重定向为日志
stdout_logfile_maxbytes=1MB ;日志大小
stdout_logfile_backups=10 ;日志备份
stdout_capture_maxbytes=1MB 
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
environment=A=1,B=2 ;预定义环境变量
serverurl=AUTO ;系统URL

新建监控任务:

[program:test]
command=python /home/ashin/code/test.py
autorestart=true
stdout_logfile=/home/ashin/test.log
redirect_stderr=true #stderr_logfile=/home/ashin/test_error.log

test.py:

import time

while True:
    print time.ctime()
    time.sleep(.5)

启动supervisor服务:

# supervisord

终端控制台:

# supervisorctl
test                       STARTING

查看状态:

# supervisorctl status test
test                   RUNNING    pid 11561, uptime 0:00:25

开启[inet_http_server]后可以访问http://localhost:9001 进入web控制台,不解开用户名和密码则会默认登录,开启后会基于基础认证弹框验证身份。server地址当然是可以自行配置的。

kill掉test.py,你会发现又被重启了,后台一直在打印时间,在web控制台里点Tail -f可以看到最近的输出

需要注意的是supervisor是监控前台进程的,如果你的启动命令是后台进程则不能成功。比如uwsgi中daemonize这个选项就不能用,要记录日志的话需要换成logto

每次修改主配置文件或增改子配置文件需要执行 supervisorctl update 使新配置生效

help: supervisorctl help

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Python#  
分享到:
阅读[1587] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

发表评论