2011-07-09 11 views
1

私はちょっと混乱しています。なぜなら、(Heroku上の)作業者を設定していなかったからです。 Resque.enqueueジョブがキューに追加されましたが完了しませんでした。待ち行列。Resqueキューはメインスレッドによって作成されますか?

私はRedis To Goを使用しているので、Redis To Goはそれ自体が外部ホストされたデータベースなので、Resqueのようなバックグラウンドプロセスを使用する目的を破ってはいけません。キューへのアクセスが予測できない可能性がありますか?

答えて

2

Resque.enqueueに電話すると、ResqueがRedisデータベースに接続し、後でジョブを呼び出すために必要な情報が追加されます。その後、作業者はRedisに接続し、最初に追加したジョブをポップアウトし、それを繰り返して繰り返します。

はい、「メイン」スレッドはRedisに接続します。それが外部データベースであるという事実は本当に重要ではありません。つまり、Mongoデータベースのアドオンを使用している人は、Mongoデータベースも外部からホストされています。あなたが実行したいジョブはRedisに追加するのにかかる時間よりも時間がかかります。

+0

キューに追加するジョブは、電子メール通知(Herokuのsendgridアドオンを使用)を送信することです。別の外部アプリケーション(sendgrid)への呼び出しを避けるために、メインスレッドを使用して外部アプリケーション(redis)への呼び出しを行うのが適切かどうかはわかりませんでした。 – sthapit

+0

sendgridを通してメールを送信するのにかかる時間と、キューにジョブを追加するのにかかる時間を把握してみてください。それをキューに追加するほうがはるかに速ければ、それに従ってください。さもなければ、それはちょうど別のステップであり、私はResqueパートを削除します。 – henrikhodne

+0

。それはsendgridのような外部アプリを呼び出すことです - それは全く予測できません。ほとんどの場合、時間はまったく必要ありませんが、時には1〜2秒かかることもあります。私はどのようにredisを使ってキューにジョブを追加するのか分かりません - これまでは高速でしたが、私たちはそれを実際に知るのに十分に長く使っていませんでした。 – sthapit

関連する問題