2012-02-07 14 views
0

私はこのアプリケーションを作成していますが、いつかはフィードをプルする必要があり、xmlパーサに時間がかかるため、したがって、ページがロードされるたびにAjax経由で非同期ロードに変更されます。私はまだ私のAjax呼び出しからH12エラーを受け取ります。今、Resqueを使ってバックグラウンドでジョブを実行することを考えています。私は問題はありませんが、処理されたフィードをAJAX経由でhtmlページにプルできるように、ジョブが終了したことをどのように知っていますか?herokuのバックグラウンドジョブはどうやってウェブが完成したのかを知っています

私の質問が明確であるかどうかわからないので、ウェブレイヤーはジョブが完了したことをどのように知っていますか?たとえば、ページ上にコンテンツを埋め込むために(javascriptのonComplete)

+1

ないが、特定始めるためですが、あなたは、私は[長時間実行ウェブプロセスのためのサーバとしてDRBの使用]に作られた過去記事に興味があるかもしれません(のhttp:/ /phrogz.net/drb-server-for-long-running-web-processes)。 AJAXを使用して別のスレッドで実行中のプロセスからの結果をポーリングして返す方法を示します。 – Phrogz

答えて

4

JavaScriptが結果を求めてサーバーをポーリングするために、サーバーが「まだ」や結果で応答することができますAJAXを使用することができ、この

  • を行うにはいくつかの方法があります。あなたは結果を得るまで尋ね続けます。あなたがクライアントにサーバープッシュをすることができますジャガーノート(http://juggernaut.rubyforge.org/)を見てみることができ

  • ウェブソケットは、問題に対処するためのHTML5の方法です。そこいくつかの宝石があなたの周りにはHerokuのにBest Ruby on Rails WebSocket tool

1

ここではアーキテクチャの問題があります。 H12の理由は、ユーザーが30秒以上座っていないからです。

長時間実行されているタスクをResqueキューに移動すると、フロントエンドのWebプロセスとの接続が切断されます。プロセス分離のために通信できる方法はありません。

したがって、あなたは何をやっているのか、どのように見る必要があります。たとえば、フィードを取得している場合は、ユーザーが出力を確認して何らかの方法で結果をキャッシュする必要がある前に、ある時点でこれを行うことができますか?またはフィードのリクエストをユーザーから受け取り、

ここで問題になっているのは、ユーザーが完了するのに妥当な時間以上かかるものを求めているということです。あなたがやっていることとその方法をよく見てください。

関連する問題