3

処理に時間がかかる CarrierWave アップロードがありますが、ユーザーがブラウザで次のアクションに進む前に完了する必要があります。フロントエンドで Ajax ファイルのアップロードを使用しているため、アプリの UI はアップロードと処理の進行状況を更新します。私の開発サーバーのタイムアウトは比較的長いため、これは私の開発環境ではうまく機能しますが、レスポンスが送信されない場合、Cedar は 30 秒後にリクエストをタイムアウトするため、Heroku ではあまりうまくいきません。私は、次のようにそれぞれに応答する応答オブジェクトを作成することにより、プロセスが完了するまで数秒ごとにスペースを送信するストリーミング応答を作成しようとしています:

class LongPoller
  def initialize(yield_every=2,task)
    @yield_every = yield_every
    @task = task
  end

  def each
    t = Thread.new(&@task)
    while t.alive?
      sleep @yield_every
      yield ' '
    end
    yield t.value.to_json
  end
end

ただし、Thin は応答をバッチ処理してクライアントに送り返していないように見えるため、これは期待どおりに機能していません。

どうすればこれを機能させることができるか、誰にもアイデアがありますか?

4

0 に答える 0