2013-05-04 11 views
18

私はサイドキックのワーカーを使って、ユーザーが初めてサインインした後、Facebookへのリクエストを完了しています。通常、タスクには約20秒かかります。Sidekiqジョブの完了を監視する最も良い方法は?

同期が完了するとすぐにajaxリクエストを使用してページに情報をロードしたいのですが、Javascriptでジョブの完了を確認する最善の方法は不明です。

残りのジョブが完了した後にCookieを設定するようにSidekiqワーカーを設定することも可能です。次に、setTimeout関数を使用して、load関数を呼び出す前にクッキーをチェックしています。しかし、これがこれを行う最善の方法かどうかは分かりません。 Redisを代わりに使用できますか?

+0

sidekiqワーカーでは、クッキーをクライアントに配信するためにHTTPレスポンスを送信する必要があり、ワーカーはサーバーではないため、Cookieを設定することはできません。 – RocketR

答えて

1

Paulまず、このPubSub on Rails tutorialをご覧ください!

これは、非同期のものがバックエンドで発生/完了したときに、ユーザーに通知するためのより良いソリューションになります。

ヒント:herokuを使用している場合は、このような抽象度の高いライブラリが多数用意されています。

1

Paul、私はあなたの懸念を分けておきます。私は、sidekiqワーカーがいくつかの情報をfacebookに送るためにいくつかのレールactiverecordモデルを使用していると仮定しています。私はFacebookの要求が正常に完了したときにそのモデルのフラグをtrueに設定します。

次に、jsでsetTimeoutを設定すると、dbの変更をポーリングすることができます。また、Webソケットを使用してより高速でより自動応答を調べることもできます。私は過去にPusherというライブラリを使用しました。レールと統合するのはかなり簡単で、非常にうっすらとしたUIになります。

関連する問題