1

HTTP 経由でデータを取得し、数秒ごとに MySQL データベースに格納する、無期限に実行されるリアルタイム データ グラバーがあります。

私のプログラムでは、最後に生成された時間が X 秒を超えるたびにワーカー (データをダウンロードして保存する関数) を生成する while True ループがあります。

while True:
    if _last_updated - datetime.now() > timedelta(seconds=5):
        green_pool.spawn_n(worker) # yes I'm using Eventlet!
        _last_updated = datetime.now()

このモジュールが常に機能し、フリーズせず、ダウンしないようにする最善の方法は何でしょうか? 緑のプールのサイズを確認する必要がありますか? Python でウォッチドッグを作成することを考えていましたが、そうすることをお勧めしますか? もしそうなら、私は何を覚えておくべきですか?

一番

4

1 に答える 1

1

やり過ぎかもしれませんが、の使用を検討しますSupervisord。他のプロセスを制御するためのプロセスです (init.d のようなものです)。while True:ループを含む制御スクリプトを開始/停止/再起動できます。また、制御スクリプトが機能しなくなった場合は、自動的に再起動します。

あなたが言及したように、制御スクリプト内でプール サイズとワーカーのスポーンの成功/失敗を監視する必要があります。しかし、制御スクリプトが常に実行されていることを確認するには、supervisord が適しています。

于 2012-06-06T22:01:09.880 に答える