在脚本中调用python Web服务器

时间:2012-06-17 11:09:25

标签: python web-services monitoring status cherrypy

我想有一个Web服务器显示我的2个python脚本的状态。 这些脚本侦听特定端口上的传入数据。我想要做的是让脚本运行时,Web服务器将返回一个HTTP200,当脚本没有运行500.我已经看过cherrypy和其他这样的python web服务器,但我不能让他们先运行,然后在Web服务器运行时继续我的其余代码。我希望如此,如果脚本崩溃,那么Web服务器也是如此。或者,如果脚本正在运行,则Web服务器显示的方式是在HTML中仅显示1的空白网页,如果不是,则为0。 有什么建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我会进一步分开:

  • 脚本A,在端口a上
  • 脚本B,在端口b上
  • 检查A和B的Web脚本C(通过向它们发出简单请求)  并以机器友好的格式返回结果,即JSON或XML
  • 网页D,它调用C并格式化人们的结果,即HTML表格

现有的程序都是这样做的 - Nagios会想起来。

答案 1 :(得分:2)

实际上我只是回答了一个类似于这个问题的问题,想法是运行脚本A并让它中断运行你想要的脚本的2个线程,然后让网页执行:

import threading, cherrypy
from cherrypy import expose

class thread1(threading.Thread):
    def run(self):
        #code for script 1 goes here

class thread2(threading.Thread):
    def run(self):
        #code for script 2 goes here

t1 = thread1()
t2 = thread2()

t1.start()
t2.start()

@expose
def check(self):
    if t1.isAlive() and t2.isAlive():
        return "1"
    return "0"

我建议你把nginx或apache放在其中,因为它们是反向代理。

现在有两种方式可以告诉你其中一个停止了。要么它会显示1,两者都运行良好。如果一个或两个停止但是设法保持脚本的其余部分运行,则为零。或者nginx / apache会给你一个500错误,说后端服务器(即:cherrypy)崩溃,这意味着整个脚本停止工作。