私たちのRails Webアプリは、ユーザーがブラウザーを介して表示するために、リクエストに応じてftpからhtmlページを含むアーカイブをダウンロード/解凍する必要があります。
アーカイブは非常に大きくなる可能性があるため、ユーザーはサーバーでダウンロード/解凍するまで待つ必要があります。
ユーザーのリクエストで fork/Process.detach を呼び出す方法で進行状況バーを実装しました。これにより、ユーザーのリクエストは完了しますが、ダウンロード/解凍プロセスはバックグラウンドで実行され続けます。彼のブラウザでレンダリングされた JavaScript は、すべての準備が整うまでサーバーのステータスを確認し、解凍された HTML ページにリダイレクトします。
ユーザーが 1 つのアーカイブを要求する限り、すべてがスムーズに進みますが、同時に 2 つ以上の要求を実行しようとすると (より多くのフォークが開始されるように)、そのうちの 1 つだけが完了し、残りは期限切れになります。アウト/同乗者に殺される(?)。パッセンジャー/フォークの問題だと思います。
どうにかして修正できるかどうかわからないので、別のソリューションに切り替える必要があると思います。ソリューションは、ダウンロードの即時かつ並列処理を許可する必要があります。ユーザーが複数のアーカイブを要求した場合、それらすべてのダウンロード/解凍の進行状況を同時に確認する必要があります。
バックグラウンドの rake ジョブをすぐに実行することを考えていましたが、起動が非常に遅いようです (また、サーバーでは毎分多くの cron rake タスクが発生しています)。私が fork が好きだった理由は、起動がとても速かったからです。仕事が遅れていることは知っていますが、他のタスクにも頻繁に使用しています。しかし、キューなしですぐに同時に複数のプロセスを開始できますか?