supervisor是一个python实现的可以对进程进行管理的程序,可以对托管的程序方便的进行类似重启,查看日志之类的操作,并提供了一个简单的操作界面.
- 显示所有配置的主机以及他们所包含的应用。
同样的,这些应用也可以批量的进行管理。
用法
- git clone https://github.com/trytofix/supervisor-easy.git
- edit config.py
from Server import Server
SERVERS = [
Server(
name='celery1',
host='127.0.0.1',
port=12345,
user='admin',
password='admin'
),
Server(
name='celery2',
host='remote.supervisor.com',
port=12345,
user='admin',
password='admin'
)
]
GROUPS = [
{
'name': 'celery',
'apps': ['celery1.test:celery', 'celery2.test:celery']
},
{
'name': 'flower',
'apps': ['celery1.flower']
}
]
上述配置中,一个Server对应的就是一个服务器上的supervisor实例,Server中的name是方便人来看的名字。
Notice: name必须是唯一的。不能重复。
下面是一个supervisor程序的配置文件。
[program:test]
command=celery -A main worker -l info -Ofair -Q test
directory=/home/q/celeryTest
user=brianyang
numprocs=1
stdout_logfile=/var/log/common.log
stderr_logfile=/var/log/common_err.log
autostart=true
autorestart=true
startsecs=10
killasgroup=true
priority=1000
[group:group1]
programs=celery,test
对照这个配置文件来讲解GROUPS
- GROUPS 可以将任何的应用分到一组进行批量管理.
- apps 是分组中要包含应用的列表.
- 'apps'中的每个字符串的定义为
server_name.group_name:application_name
. - application_name 对应supervisord.conf中'[program:test]' 里的'test'.
- group_name对应supervisord.conf中'[group:group1]' 中的'group1'.
- server_name 就是之前在SERVERS中定义的某个Server的name.
运行: python webui.py
测试项目。
不要在生产环境中使用
python webui.py
。 更好的做法是使用一种常用的uwsgi服务器,例如uwsgi.
下一步要做的
- 性能提升
- UI提升
- 异常处理
网友评论