WebサーバーまたはWebページからバックエンドジョブと通信する

StackOverflow https://stackoverflow.com/questions/1504729

  •  19-09-2019
  •  | 
  •  

質問

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ページに表示したいものによって異なります

サイドノートで - 「ジョブ」がコンピレーションである場合、 ハドソン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top