码迷,mamicode.com
首页 > 其他好文 > 详细

使用supervisor监控服务器持续运行的文件

时间:2018-12-14 13:05:46      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:出现   mail   监听   运行   检查进程   需要   监听事件   out   监听配置   

在做数据传输的时候需要让python脚本不断运行,如果脚本突然中断而来不及造成的影响很不好。虽然可以在每个脚本中加上try..catch,但这样代码重复,维护起来挺费劲。本人也尝试使用python的subprocess来管理,但subprocess只能做到发现脚本中断后立即重启,而不能人为手动重启(有时候中断是因为出现exception,需要排查)。后来发现supervisor可以使用,就尝试安装supervisor来用一下。

安装文档很容易搜到,最主要是supervisor只能由python2来安装,需要找到服务器中的python2文件来安装。

配置方案也比较容易,有个细节就是所有的配置语句后面不能紧挨着分号‘;‘,需要留一点空,否则会出现异常。

supervisor提供了web界面查看正在管理的脚本,可以从界面查看脚本启动重启等等。

最后supervisor提供了监听事件功能,主要建立监听配置,当监听到脚本中断退出的事件,把事件信息传输给自建的python脚本进行处理。例如本人自建的python脚本代码如下:

    if not SUPERVISOR_SERVER_URL in os.environ:
        print("%s must be run as a supervisor listener." % sys.argv[0])
        return
    while True:
        # echo ‘READY‘ and wait for event for stdin.
        write_stdout(READY\n)
        line = sys.stdin.readline()  # read header line from stdin
        headers = dict([x.split(:) for x in line.split()])
        data = sys.stdin.read(int(headers[len]))  # read the event payload
        # write_stdout(‘事件名:‘+headers[‘eventname‘]+‘\n‘)
        if headers[eventname] == PROCESS_STATE_EXITED:
            pheaders, pdata = parseData(data)
            process_name = pheaders[processname]
            msg = 进程%s(PID: %s)异常退出,请检查进程状态.                   % (process_name, pheaders[pid])
            smtp = mail_config()
            msg = "<p>错误原因:</p><b>" + msg + "</b>"
            message = MIMEText(msg, html, utf-8)
            message[From] = Header("supervisor监控脚本", utf-8)  # 发送者
            message[To] = Header("开发成员", utf-8)  # 接收者
            subject = supervisor监控异常
            message[Subject] = Header(subject, utf-8)
            smtp.sendmail(xxxx@xxx.com, xxxx@xxx.com, message.as_string())
        write_stdout(RESULT 2\nOK)  # transition from READY to ACKNOWLEDGED
    pass

代码中的write_stdout(READY\n)write_stdout(RESULT 2\nOK‘)都是一个信息标准的头尾,这里的代码是当捕捉到退出事件,把异常信息获取,并发送邮件给运维。运维就会根据错误日志排查错误,当排查完错误后在管理界面重新启动脚本即可。

使用supervisor监控服务器持续运行的文件

标签:出现   mail   监听   运行   检查进程   需要   监听事件   out   监听配置   

原文地址:https://www.cnblogs.com/liudamu/p/10118234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!