2012-06-17 30 views
0

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

在此先感谢。

回答

2

其实我只是回答适度类似于此的想法是运行脚本中运行,并打破它关闭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的infront与他们作为一个反向代理。

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

+1

啊,这很聪明。我喜欢这个解决方案,非常优雅,谢谢。还有为什么反向代理?我只是想把它粘在一些晦涩的端口上。 –

+0

那么,如果你没有一个反向代理,那么你将不会收到500错误的请求将超时,虽然这将是另一种方式来检查它是否正在运行......它只是一个建议,如果你要去要做它的生产运行的东西... – gabeio

+1

噢好吧。我可以比较容易地设置反向代理。所以这不应该是一个问题。 –

2

我开打破它进一步:

  • 脚本A,上端口
  • 脚本B,上端口b,其检查在A和B(通过使简单的请求到
  • 网页脚本C他们) 并返回机器友好格式的结果,即JSON或XML
  • 网页d其中调用C和格式人的结果,即一个HTML表格

现在有一些程序可以做到这一点 - 纳吉斯斯心仪。

+0

到目前为止,我的脚本A和B上的脚本B,我想尝试并避免脚本C,因为它增加了另一个失败点。 –