0

2 つの Python スクリプトのステータスを表示する Web サーバーが必要です。これらのスクリプトは、特定のポートで着信データをリッスンします。私がやりたいのは、スクリプトが実行されているときにWebサーバーがHTTP200を返し、スクリプトが実行されていないときに500を返すようにすることです.cherrypyや他のそのようなpython Webサーバーを見てきましたが、できませんでした最初にそれらを実行してから、Web サーバーの実行中に残りのコードを続行します。スクリプトがクラッシュした場合に Web サーバーもクラッシュするようにしたいと思います。または、スクリプトが実行されている場合はHTMLに1のみ、実行されていない場合は0の空のWebページをWebサーバーが表示する方法。助言がありますか?

前もって感謝します。

4

2 に答える 2

2

私はそれをさらに分解します:

  • スクリプト A、ポート a
  • スクリプト B、ポート b
  • Web スクリプト C は、A と B を (単純な要求を行うことによって) チェックし、結果をマシンに適した形式 (つまり、JSON または XML) で返します。
  • Web ページ D は C を呼び出し、人々の結果をフォーマットします。つまり、HTML テーブルです。

これを行う既存のプログラムがあります - Nagios が思い浮かびます。

于 2012-06-17T12:50:39.207 に答える
2

実際には、スクリプト A を実行し、意図したスクリプトを実行している 2 つのスレッドを中断させてから、Web ページに次の操作を実行させるというアイデアと、これにやや似た質問に答えていました。

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 つが停止したことを示す 2 つの方法があります。両方とも正常に動作していることを示す 1 が表示されます。一方または両方が停止したが、残りのスクリプトの実行を維持できた場合はゼロ。または、nginx/apache は、バックエンド サーバー (つまり、cherrypy) がクラッシュしたことを示す 500 エラーを返します。これは、スクリプト全体が動作を停止したことを意味します。

于 2012-06-17T16:18:19.370 に答える