0

Heroku で Rails 3.2 を実行しており、Delayed_jobを使用してバックグラウンド タスクを管理しています。

アプリは CSV を生成し、それを要求した人にブラウザーを介してダウンロードします。ただし、ファイルは巨大で、生成に最大 30 秒かかります。

私のコントローラーは次のようになります。

def index
    @unpaginated = @search.result.order("created_at DESC")   # load all matching records

respond_to do |format|
      format.csv { render csv: @unpaginated, filename: 'outlets_' + Time.now.strftime("%Y_%m_%d") }

end

このようなものをバックグラウンド ジョブに移動するにはどうすればよいですか?

4

1 に答える 1

0

私はこのようなことをします:

  1. ファイル生成用のバックグラウンド ジョブを作成します。
  2. バックグラウンド ジョブが完了するのを待機し、定期的に更新される待機ページにリダイレクトする
  3. バックグラウンド ジョブが完了したら、ファイルの URL にリダイレクトします。

必要に応じて、ステップ 2.5 で生成されたファイルを amazon s3 にアップロードします。これにより、ステップ 3 が簡単になります。

于 2012-08-03T20:45:40.237 に答える