処理に時間がかかる 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 は応答をバッチ処理してクライアントに送り返していないように見えるため、これは期待どおりに機能していません。
どうすればこれを機能させることができるか、誰にもアイデアがありますか?