WebサーバーまたはWebページからバックエンドジョブと通信する
質問
Linuxを実行している「アプライアンス」(より良い説明がないため)があります。
現在、ジョブを立ち上げるためにボックスに入ります。これは私のユーザーにとって十分にフレンドリーではないので、スクリプトを起動するためにシンプルなWeb UIをまとめています。ジョブは10秒から数時間まで実行されます。 Web UIは、ジョブのステータスを反映する必要があります。
過去に、新しいジョブリクエストのためにスプールディレクトリ(またはDBテーブル)を監視し、プロセスを生み出し、プロセスを監視し、DBテーブルでWeb UIの情報を提供するサーバーでデーモンを実行することで、同様の問題を解決しました。またはステータスファイル。その後、Web UIはジョブリクエストをスプールディード(DB)にドロップし、時々ステータスファイル(DB)を確認します。これは、このタスクの過剰なものかもしれません。
現在のタスクについては、CGIからジョブを生み出し、時々、ジョブが進行または終了時に書くステータスファイルをチェックすることを検討しています。
私の質問:これを行うためのより良い(よりシンプル/より速い/より堅牢な)方法はありますか?私が知っておくべき既存のパターンやツールはありますか?
(Pythonソリューションは理想的です。)
ありがとう。
解決
私は多くのプロジェクトでこれを行います。即座に個別のPythonスクリプト(サブプロセスを使用)を生成するWebアプリ(主にPython/CGI) それ自体をデーモー化します 仕事をするために。その後、Web-AppはAJAXリクエストを発行してデーモンプロセスの進行状況を確認し続けます(通信に簡単なTXTファイルを使用します。データベースはおそらくより良いでしょう)。素晴らしいタッチは、エンドユーザーが終了したら、エンドユーザーにデーモンに電子メールを送ることです(結果を取得するためのリンク付き)。これにより、ユーザーは何時間もかかるジョブでWebブラウザを閉じることができます。
他のヒント
あなたの問題を正しく理解しているかどうかはわかりませんが、同時に実行できる複数の「ジョブ」があり、それらが完全であるかどうかにかかわらず、Webページに表示してほしいと思いますか?
ジョブを起動すると、Webページ(Python&Mod_WSGIなど)がジョブに入るPythonスクリプトを起動します。SQLiteデータベースとジョブを実行すると、ジョブが完了すると、スクリプトがジョブのエントリを更新して、完全にマークされています
ステータスページには、SQLiteからのものが表示されます。
ジョブIDとおそらく開始/終了時間に加えてDBに入れたいものは、ジョブステータスWebページに表示したいものによって異なります
サイドノートで - 「ジョブ」がコンピレーションである場合、 ハドソン