0

Linuxを実行している「アプライアンス」(より良い説明がないため)があります。

現在、ボックスに ssh してジョブを起動しています。これは私のユーザーにとって十分にフレンドリーではないため、スクリプトを起動するための単純な Web UI をまとめています。ジョブは 10 秒から数時間実行されます。Web UI は、ジョブのステータスを反映する必要があります。

過去に同様の問題をサーバー上でデーモンを実行することで解決しました。このデーモンは、新しいジョブ リクエストのスプール ディレクトリ (または db テーブル) を監視し、プロセスを生成し、プロセスを監視し、db テーブルで Web UI に情報を提供します。またはステータスファイル。次に、Web UI はジョブ要求をスプール ディレクトリ (db) にドロップし、ときどきステータス ファイル (db) をチェックします。これは、このタスクにはやり過ぎかもしれません。

現在のタスクでは、cgi からジョブを生成し、ジョブの進行または終了時にジョブが書き込むステータス ファイルを時折チェックすることを検討しています。

私の質問:これを行うためのより良い(より簡単/より速く、より堅牢な)方法はありますか? 知っておくべき既存のパターンやツールはありますか?

(Python ソリューションが理想的です。)

ありがとう。

4

2 に答える 2

2

私はこれを多くのプロジェクトで行っています。別のPythonスクリプト(サブプロセスを使用)を生成するWebアプリ(主にPython / CGI)は、作業を実行するために即座にデーモン化されます。その後、Webアプリはデーモンプロセスの進行状況を確認するためにAJAXリクエストを発行し続けます(通信には単純なtxtファイルを使用しますが、データベースの方がおそらく良いでしょう)。いい感じの1つは、デーモンが終了したらエンドユーザーに電子メールを送信することです(結果を取得するためのリンクを使用)。このようにして、ユーザーは数時間かかるジョブでWebブラウザーを閉じることができます。

于 2009-10-01T16:07:06.110 に答える
0

問題を正しく理解しているかどうかはわかりませんが、同時に実行できる複数の「ジョブ」があり、それらが完了しているかどうかに関係なく Web ページに表示したいと思いますか?

ジョブを起動すると、Web ページ (たとえば、python & mod_wsgi) は、ジョブを入力する python スクリプトを起動します。たとえば、sqlite データベースにジョブを実行し、ジョブが完了すると、スクリプトはジョブのエントリを更新します。完了とマークされています

ステータス ページには、sqlite からのものだけが表示されます。

ジョブ ID とおそらく開始/終了時間に加えて、DB に入力したいものは、ジョブ ステータス Web ページに表示したい内容によって異なります。

余談ですが、「仕事」が編集物である場合は、ハドソンに会ってください

于 2009-10-01T16:00:52.097 に答える