3

注:この投稿には、ベストプラクティスに満たないものがあります。警告してください:)

  • マイクロインスタンスのAWSサーバーに接続する管理ダッシュボードに取り組んでいます。
  • DBには数千万のレコードがあります。
  • ほとんどのクエリは数秒以内に返されますが、私の制御できないいくつかの事柄に基づいて、返されるまでに最大1〜2分かかるものもあります。

Herokuの30秒の制限(https://devcenter.heroku.com/articles/request-timeout)のため、クエリが返されるまで接続を開いたままにする時間を購入する方法を見つける必要があります。Herokuは、その間にクライアントにバイトを送信することで時間を購入できると言っています。これにより、さらに55秒が購入されます。

とにかく、Herokuの時間を失速させる解決策があるかどうかだけ興味があります。ありがとう!

4

3 に答える 3

2

私はこれを回避しました。私たちのアプリはSinatraを実行しており、EventMachine gem\0を使用して10秒ごとにストリームに書き込みを続けているため、アクションが完了するまでHerokuは接続を閉じません。例https://gist.github.com/troex/31790323fb4a8a29c8b8cd84e50ad1e8を参照してください。

私の例はPumaを使用していますが、UnicornとThinでも機能するはずです(Thinは必要ありませんEventMachine.run)。Railsの場合、before/after_actionを使用してイベントタイマーを開始/停止できると思います。

于 2016-08-13T00:59:02.450 に答える
1

物事を複数のクエリに分割することができます。

クエリを送信し、AWSサーバーにクエリを受信したとすぐに応答させ、データをプルしたら、POSTリクエストを介してそのデータをHerokuインスタンスに送信することができます。

于 2012-10-24T21:30:19.667 に答える
0

はい、ajaxを介してそれを行い、少し後でもう一度尋ねるという応答を送り返します...

于 2012-10-24T21:26:01.333 に答える