0

nginx に関連する質問を投稿した後、調査をもう少し進めました。問題は、merb フレームワークが約 30 秒後にタイムアウトすることです。基礎となるnginx-serverにタイムアウトしないように指示すると、merbはタイムアウトし、そうしないように指示する方法が見つかりません。数分かかるリクエストを行う必要があります。

ヒントはありますか?どうもありがとう。

- アップデート -

merb の背後にある雑種がエラーを引き起こしているようです。merb で実行中の mongrel-timeout を変更する方法はありますか?

4

1 に答える 1

1

タイムアウトを回避するのではなく、タスクの実行を延期することでスループットを最大化するにはどうすればよいでしょうか。

長時間実行されるタスクに対するいくつかのアプローチは、run_laterを使用するか、別のワーカープロセスを実行してタスクを完了することです ...

def run_in_background(r)
    Thread.new do
        response = IO.popen(r) do |f|
            f.read
        end
    end
end

どちらの場合も、ステータス コードとして202 (Accepted)を返し、呼び出し元のアプリケーションがステータスの更新を取得できる URL を返す必要があります。

このアプローチを使用して、バックグラウンド バッチ プロセスを実行させるリクエストを処理します。それぞれが、開始時刻、進行状況、および完了時刻をデータベースに書き込みます (ファイルを簡単に使用できます)。URL が呼び出されると、データベースから進行状況をフェッチし、それを呼び出しプロセスに返します。

于 2010-02-10T13:06:15.137 に答える