3

Herokuでホストされているアプリが1つあり、このアプリは多くのデータ情報をデータベースに保存しています(約70秒かかります)。

Herokuは、すべてのリクエストの30秒後にタイムアウトに関するエラーページH12を表示しますが、アップロードの進行中にH12エラーを表示する代わりに、情報メッセージを表示するにはどうすればよいですか?

私はこの例を探していましたが、あまり成功しませんでした...サーバーから制御文字列を毎回(たとえば15秒)送信する必要があるというメモを見つけましたが、すでに送信していませんでした。それを行う方法のいくつかの具体的な例を見つけてください...

それを行う方法について何かアドバイスはありますか?

少し早いですがお礼を。

4

1 に答える 1

0

どのプラットフォームでもリクエストが完了するまでユーザーを70秒待つのはお勧めできません。Herokuは、30秒のタイムアウトを実装することで、このベストプラクティスを適用します。したがって、本当の問題は、アプリケーションをより適切に設計する方法です。

Herokuには、この問題を解決するために設計されたバックグラウンドワーカーの実装に関する記事があります:https ://devcenter.heroku.com/articles/queueing

基本的なアプローチは、Webリクエストにバックグラウンドジョブをスケジュールさせ(Delayed Job、Queue Classic、Resqueなどを使用)、進行状況のインジケーターでユーザーにすぐに応答することです。次に、バックグラウンドワーカーを実行しているdynoが、情報をデータベースに保存するという手間のかかる作業を行います。完了すると、dbまたはその他のストレージメカニズムのフラグが反転し、ジョブが完了したことをWebクライアントに通知します。

バックグラウンドワーカーを実行するには、別のdynoが必要です。あなたがその費用を避けたいのなら、あなたは多くの人が成功したと報告しているガールフライデーを調べることができます。

お役に立てば幸いです。

于 2012-04-18T14:56:17.973 に答える