0

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

提前致谢。

4

2 回答 2

2

我会进一步分解它:

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

现有的程序可以做到这一点 - Nagios 浮现在脑海中。

于 2012-06-17T12:50:39.207 回答
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)崩溃了,这意味着整个脚本停止工作。

于 2012-06-17T16:18:19.370 回答