私はRailsアプリを実行しています。このアプリは、C++で開発されたローカルクライアントからのjsonWebサービス呼び出しを持っています(マルチパートjsonフォームを使用したpostコマンド、ストリーミングファイルのアップロード)
ルーティングメッシュについてのHerokuドキュメントをすでに読んでおり、http接続の30年代のHeroku制限について言及し、ワーカーdynoを参照する長いポーリングの代替案について言及しています。
通話中にPDFドキュメントを処理し、署名を挿入します。このPDFドキュメントは、100kbまたは11Mb(またはそれ以上)のいずれかです。
最終的にはバックグラウンドプロセスでこのアクションを実行する必要があることを理解していますが、絶対に実行する前に実行することは避けたいと思います。
このタイムアウトを増やす方法を知っていますか?
以下のコードでわかるように、保存後にドキュメントを処理しています(これは、内で実行していましたafter_save
が、処理前に応答を送信することを期待してコントローラーに変更しました)。
ドキュメント処理の前にクライアントが応答を受け取ることを期待しますが、Heroku側でタイムアウトが発生し、クライアント側でエラーが発生します。
これはすべて小さいドキュメントで正常に機能しますが、400kbしかない121ページのPDFドキュメントの場合は吹き飛ばされます。
最終的に、ファイルがアップロードされるので、必要なのは、タイムアウト応答が送信される前に、その応答がクライアントアプリに進むことだけです...
助言がありますか?
私のエラー:
at=error code=H12 desc="Request timeout" method=POST path=/documents host=fierce-beach-2720.herokuapp.com fwd="81.193.155.217/bl4-155-217.dsl.telepac.pt" dyno=web.1 queue=0ms wait=0ms connect=1ms service=32272ms status=503 bytes=0
私のコントローラー:
respond_to do |format|
if @document.save!
format.html { redirect_to root_path, :flash => { :success => 'Document was successfully created.'} }
format.json { render json: @document, status: :created, location: @document}
@document.document_process