私が開発しているWebアプリケーションは、http要求/応答サイクル中に実行するには長すぎるタスクを実行する必要があります。通常、ユーザーはリクエストを実行し、サーバーはこのリクエストを受け取り、とりわけ、データを生成するためにいくつかのスクリプトを実行します(たとえば、povrayで画像をレンダリングします)。
もちろん、これらのタスクには長い時間がかかる可能性があるため、サーバーは、クライアントに応答を送信する前に、スクリプトの実行が完了するまでハングしないようにする必要があります。したがって、スクリプトの実行を非同期で実行し、クライアントに「リソースはここにありますが、準備ができていません」と指定し、準備ができたときにリソースを取得して表示できるように、おそらくajaxエンドポイントにポーリングするように指示する必要があります。
さて、私の質問はデザインに関連していません(ただし、この点についてのヒントも非常に楽しんでいます)。私の質問は、この問題を解決するためのシステムがすでに存在するので、四角いホイールを再発明しないということです。必要に応じて、プロセスキューマネージャーを使用してタスクを送信し、HTTPエンドポイントを配置して、ajaxクライアントに「保留中」、「中止」、「完了」などのステータスを送信しますが、このタスクのために特別に存在するので、私はほとんどそれを楽しみます。
私はpython+djangoで作業しています。
編集:ここでの主な問題は、サーバーとクライアントがタスクのステータスに関する情報をどのようにネゴシエートして交換する必要があるかではないことに注意してください。
問題は、サーバーが非常に長いタスクの送信とエンキューをどのように処理するかです。つまり、サーバーにLSFでスクリプトを送信させるよりも優れたシステムが必要です。うまくいかないというわけではありませんが、少し多すぎると思います...
編集2:他の答えが得られるかどうかを確認するために賞金を追加しました。pyprocessingを確認しましたが、ジョブの送信を実行して、後の段階でキューに再接続できません。