2012-06-17 2 views
0

Я хотел бы иметь веб-сервер, отображающий состояние 2 моих сценариев python. Эти сценарии прослушивают входящие данные на определенном порту. Я хотел бы сделать это так, чтобы при запуске скрипта веб-сервер вернул HTTP200, а когда скрипт не запустил 500. Я посмотрел на cherrypy и другие подобные веб-серверы python, но я не мог сначала запустите их, а затем во время работы веб-сервера продолжайте работу с остальной частью моего кода. Мне бы хотелось, чтобы при сбое сценария веб-сервер. Или способ отображения веб-сервера означает, что пустая веб-страница имеет только 1 в HTML, если скрипт запущен, или 0, если это не так. Любые предложения?Вызов веб-сервера python в скрипте

Заранее спасибо.

ответ

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 infront этого с ними, являющимися обратным прокси.

Теперь есть два способа, чтобы это показало вам, что один из них остановлен. Либо он покажет вам 1, что обе работают нормально. Нуль, если один или оба остановились, но удалось сохранить остальную часть скрипта. Или nginx/apache даст вам 500 ошибок, заявив, что сервер backend (т. Е.: Cherrypy) разбился, что означает, что весь сценарий перестает работать.

+1

А это умно. Мне нравится решение, очень элегантное, спасибо. Также почему обратный прокси? Я просто собирался вставить его в какой-то неясный порт. –

+0

Хорошо, если у вас нет обратного прокси-сервера, тогда вы не получите ошибку 500, которую запрос просто отключит, хотя это будет другой способ проверить, работает ли он или нет ... Это просто предложение, если вы собираетесь чтобы делать это для производственного пробега чего-то ... – gabeio

+1

О, хорошо. Я могу настроить обратный прокси относительно легко. Так что это не должно быть проблемой. –

2

я бы разбить его на части дальше:

  • скриптом, порт с
  • сценарий B, порт б
  • веб-сценариев C, который проверяет на A и B (путем простых запросов их) и возвращает результаты в машинно-формате, то есть JSON или XML
  • веб-страницы D, который вызывает C и форматирует результаты для людей, т.е. HTML-таблицы

Существуют существующие программы, которые делают это - Nagios вспоминает.

+0

До сих пор у меня есть сценарий A на сценарии B и сценарий B, я хотел бы попытаться избежать Script C, поскольку он добавляет еще одну точку отказа. –