2011-07-19 3 views
0

CeleryでRabbitMQを使用していて、タスクのカスタムルーティング設定をいくつか設定しました。特定の種類のタスクが1つのキューに移動し、他のすべてのタスクが別のキューに移動します。今私はそれが動作しているかどうかを確認したい。どのタスクがどのキューに入ったのかを確認する

このため、どのタスクがどのキューに入ったのかを調べたいと思います。残念ながら、私はこれに私を助けることができる何かを見つけませんでした。 celeryevモニタは、どのタスクが受信され、どのような完了状態であるかに関する情報を提供するだけです。 rabbitmqctlは私に現在の実行中のタスクと待ち合わせ中のタスクに関する情報だけを提供します。そのため、私の意図したタスクがどのキューに行くのかわかりません。

誰でも私にこれを手伝ってもらえますか?

答えて

1

通常、AMQPを使ってキュー上のメッセージを検査することはできません(ただし、Celeryについてはわかりません)。

一度限りのテストとして必要な場合は、最も簡単な方法は、おそらくPythonでキューからすべてのメッセージを取得し、それらをプリントアウトするクイックプログラムを作成することでしょう。 py-ampqlibを使用して

、これはそれを行う必要があります:あなたはより多くの助けが必要な場合は

from amqplib import client_0_8 as amqp 

conn = amqp.Connection(host="localhost:5672", userid="guest", password="guest", virtual_host="/", insist=False) 
chan = conn.channel() 

queue_name = "the_queue" 

print "Draining", queue_name 

while True: 
    msg = chan.basic_get(queue_name) 
    if msg is None: 
     break 
    print msg.body 

print "All done" 

は、尋ねるには良い場所はRabbitMQ Discussメーリングリストです。 RabbitMQの開発者は、そこに掲載されているすべての質問に答えるために最善を尽くしており、セロリの著者もそれを読んでいます。

+0

ありがとうございました。あなたが提供した情報は、私の進行中の仕事に非常に役立ちました。私は要件を少し変更しました。私がチェックしたいのは、ルーティングが正しく行われているかどうかでした。これは私がタスクをキューイングすることによって行ったが、私の消費者/ブローカーはUPではなかった。そこでジョブは待ち行列に置かれ、rabbitmqctl -list_queuesを介してチェックされ、ルーティングが正しいかどうかがわかりました(私の場合は間違っています)。 py-ampqlibは、RabbitMQを使った私のServer-Density設定が正しいかどうかをチェックしていた私の他の仕事に役立った。ありがとう。 – Siddharth

関連する問題