2012-06-17 3 views
0

파이썬 스크립트 2 개를 웹 서버에 표시하고 싶습니다. 이 스크립트는 특정 포트에서 들어오는 데이터를 수신합니다. 내가하고 싶은 것은 스크립트를 실행할 때 웹 서버가 HTTP200을 반환하고 스크립트가 500을 실행하지 않을 때 그렇게해야한다는 것이다. cherrypy와 다른 파이썬 웹 서버를 보았지만 나는 할 수 없었다. 먼저 웹 서버를 실행하고 나머지 코드는 계속 실행하십시오. 스크립트가 충돌하면 웹 서버도 작동합니다. 또는 웹 서버가 표시하는 방법은 스크립트가 실행 중일 경우 HTML에 1을 넣거나 그렇지 않은 경우 0으로 빈 웹 페이지를 말합니다. 제안 사항이 있으십니까?스크립트 내에서 파이썬 웹 서버 호출하기

미리 감사드립니다.

답변

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에 넣으라고 권합니다.

이제 두 가지 방법으로이 중 하나가 중지되었음을 알 수 있습니다. 둘 중 하나가 잘 돌아가고 있다고 표시됩니다. 둘 중 하나 또는 둘 모두 중지했지만 스크립트의 나머지 부분을 계속 실행하면 0입니다. 또는 nginx/apache는 백엔드 서버 (예 : cherrypy)가 작동하지 않아 전체 스크립트가 작동하지 않는다는 500 개의 오류를 표시합니다.

+1

아, 영리합니다. 나는 해결책을, 매우 우아하고, 고맙다. 또한 역방향 프록시가 필요한 이유는 무엇입니까? 나는 그걸 막연한 항구에 붙이려 고했다. –

+0

음, 역방향 프록시가 없다면 500 오류가 발생하지 않을 것입니다. 요청이 시간 초과 될 수 있습니다. 실행 중인지 아닌지를 확인하는 또 다른 방법 일 것입니다. 생산 무언가를 위해 그것을하기 위해 ... – gabeio

+1

오, 좋아. 역방향 프록시를 비교적 쉽게 설정할 수 있습니다. 그래서 그것은 문제가되어서는 안됩니다. –

2

나는 떨어져 더 그것을 깰 것 :

  • 스크립트 A를 포트에
  • 스크립트 B를 포트에 간단한 요청을하여 A와 B (에 확인
  • 웹 스크립트 C b를 그) 와 기계 친화적 인 형식으로 결과를 반환, 즉 JSON 또는 XML
  • 즉, HTML 테이블
, C를 호출하고 사람에 대한 결과의 형식을
  • 웹 페이지 D

    Nagios가 마음에 들게하는 기존 프로그램이 있습니다.

    : 사실 난 그냥 생각이 스크립트 A를 실행하는 것입니다 그리고 당신이 의도 한 후 바로 웹 페이지가 스크립트를 실행 2 개 스레드를 중단 한이 일에 약간 비슷한 질문에 대답했다
  • +0

    지금까지 스크립트 A와 스크립트 B를 b에두고 스크립트 C가 다른 실패 지점을 추가하기 때문에 시도하고 싶습니다. –

    관련 문제