2012-03-12 3 views
4

Ok ..私は24人のワーカーを持っています(私はそれを理解しています) 私は1000人のクライアントを持っています。それぞれpostgresqlデータベースに独自の「スキーマ」があります。Resque ..キューのリストを取得するにはどうすればいいですか

各クライアントには「後で」実行できるタスクがあります。私の会社のバックエンドに注文を送信するのは素晴らしい例です。

私はクライアントごとに新しいキューを作成でき、各キューには独自のワーカー(プロセス)があると考えていました。それはカードにはないようです。 1つのクライアントは、ヒープを使用している場合

ので、[OK]を..私の考えは今、クライアントレコードにキューフィールドを持っている..です ので15を介してクライアント1が106を介してqueue_a とクライアント16であるが、queue_b ..電気ショック療法であります新しいキューに移動したり、他のキューを遅いキューから移動したりすることができます。低い金額の顧客が収集される可能性があります。バランスのとれた行動ですが、メトリックを追跡すると、管理するのは難しくありません(いずれにしても)

聞くのがすごくいいです、私は本当にスピットボールフェイズです)

今は、私は各キューの作業者を作成する方法を理解したいと思います。 https://gist.github.com/486161は、Xワーカーを作成する方法を教えてくれますが、実際にはワーカーをキューに設定することはできません。私がそれを知っていて、待ち行列のリストを取得する方法を知っていれば、私は限界まで実行可能な解決策に向かっていると思います。私は私の計画は苦難に満ちていることを実感
http://blog.winfieldpeterson.com/2012/02/17/resque-queue-priority/
に読む


...最初のクライアント/キューに労働者に追加され、優先権を得るだろう。私はそれが欲しくない、私はそれらがすべて同じにしたいと思います。限り、彼らは同じキューの一部..

答えて

10

ているように私はちょうど話題に固執する:)

resque内のすべてのキューを取得して非常に簡単です

Resque.queues 

は、すべてのキュー名のリストです、それが失敗した "キューが含まれていない、私はこの

(['failed'] + Resque.queues).each do |queue| 
    queue_size = queue=='failed' ? Resque::Failure.count : Resque.size(queue) 
end 
+0

おかげでヒープの男のような何かをした。私はそれが最善の方法だわからないんだけど、それは私が各QUEのワーカーを持つようになります。..私は自分の思考をhaに広げるかもしれない1人の作業者につき1つ以上のキューがありますが、それは優先度のためだけです。 – baash05

+0

キューがアルファソートされているかどうか知っていますか? – baash05

+0

[Redis.queuesの呼び出し](https://github.com/resque/resque/blob/8a8fd83f1f32755734f0068d9f211aeb2fda1f9e/lib/resque.rb#L253)は、[SMEMBERS](http://redis.io/コマンド/ SMEMBERS)操作を実行します。 Redisはスピードのために設計されたキー値のキャッシュ/ストアなので、SMEMBERSはセットメンバーをソートしようとしません。 @ baash05の質問への答えは - noです。 – sameers

関連する問題