0

PDF レポートの生成という 1 つの長時間実行タスクを持つ Web アプリがあります。さまざまなグラフが生成され、全部で15秒ほどの処理時間。レポートはユーザーによって生成されます。

現在、リクエスト時にレポートを処理するとプロセスが滞り、さらに重要なことに (この Web サイトの使用量が多くないことを考えると) リクエストがタイムアウトすることがあります。

そのため、アプリのこのセクションのアーキテクチャを再設計しています (Rails 2.3.8)。これを文脈に置くと、これらのレポートが 1 日に 2 つ以上生成される可能性は低く、これは非常にニッチなアプリケーションであるため、大幅なさらなるスケーリングは大きな懸念事項ではありません。ただし、将来的にプロジェクトを引き継ぐつもりなので、安定性は重要です。

私が考える最も明白な解決策は、Spawnを使用してレポートを生成し、完了したらメールでダウンロード リンクをユーザーに送信することです。私が調べた別の解決策はDelayedJobです。

同様のことをしたことがある人は、あるアプローチを別のアプローチよりも推奨できますか?

4

1 に答える 1

0

delayed_job、またはその他のキューイング メカニズムを設定するのが最も簡単です。delayed_job を使用すると、PDF を作成する代わりにワーカーをキューに入れるだけで、サーバー上のバックグラウンド プロセスがキューから処理され、利用可能な作業が行われます。スポーンを使用してプロセス全体をフォークするのは少し手間がかかるように思われ、他のマイナーではあるが実行時間の長いタスク (電子メールの送信など) には適していないようです。

于 2012-02-19T20:35:58.020 に答える