0723Name_Not_Found
2018/11/04(日) 13:17:14.57ID:???丁寧にありがとうございます
>Railsで非同期するならActiveJob使えばいいやん?
軽く調べてみたらコード自体は簡単にかけるんですけどそれを動くようにするのに
sidekiqとかredis?みたいなジョブサーバーを建てないといけないみたいで
サーバーをたてるとなるとリソースの問題やモニタリングやログ監視とかも必要になってきて
たかがダウンロードに進捗つけるのにそこまでしなきゃいけないものなのかなと…
>別にRailsでZIPをストリームで返すことはできる
何っていうジェムをつかえばいいんでしょう
ファイルを逐次追加はできても send_data send_file できるのは
zipが完成してからってジェムしかないんですよね
zip自体はエントリ単位でストリームに対応してるアルゴリズムらしいのですが
>ZIPもS3に作成し
できればファイルに残さずメモリ上で処理したいんですよね
ダウンロードはこれまでも何度かつけたことがあるんですがファイルを作ってリダイレクトだと
完了したあとダウンロードされないことがあるとサーバーにごみが残り続けるって問題があって…
>非同期でZIP作成してZIPの作成の完了をAjaxで定期的に問い合わせ
仰る方法で実現することはできると思うし多数のユーザからリクエストが来るならそうするべきですが
今回内向け管理画面でオペレーターがひとりって想定でコントローラを専有してOKなので
いちばんはじめに>>669で質問したように >>669 ができればコーディングもリソースも楽なんですよね…
非同期処理にしても忙しい処理してる最中にポーリングして進捗にうけこたえするのって無駄な気がするんです
それに比べればKeeo-Aliveで進捗をストリームで受け取ることさえできれば
サーバー側でタイミングや頻度もコントロールできますしね
結局IE上のajaxでレスポンスをストリーム受信することって無理なんでしょうか…
Chromeではfetchのreadablestreamをつかってダウンロード進捗が動いたのでサーバーからはflushできてるみたいなので
あとIEで送られてきたレスポンスをバッファせず受け取ることさえできればすべてが解決するんですが…