supervisor集中式管理

作者: 写写代码唱唱歌 | 来源:发表于2016-06-28 21:49 被阅读391次

    supervisor是一个python实现的可以对进程进行管理的程序,可以对托管的程序方便的进行类似重启,查看日志之类的操作,并提供了一个简单的操作界面.


    • 显示所有配置的主机以及他们所包含的应用。

    同样的,这些应用也可以批量的进行管理。

    用法

    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提升
    • 异常处理

    欢迎fork和star
    github地址
    原文地址

    相关文章

      网友评论

        本文标题:supervisor集中式管理

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