web-dev-qa-db-ja.com

RQ-キューを空にして削除する

[〜#〜] rq [〜#〜] を使用していて、何千ものアイテムを含むfailedキューと、作成した別のtestキューがあります。しばらく前にテストを行いましたが、現在は空で未使用です。 failedキューからすべてのジョブを削除し、testキューを完全に削除する方法を知りたいですか?

基本的な質問をお詫びしますが、これに関する情報は RQ docs にありません。また、 Redis とRQの両方にまったく慣れていません...ありがとうございます前進!

16
Cian

Rqを使用したクリーンアップ

RQは、キューを空にする方法を提供します。

>>> from redis import Redis
>>> from rq import Queue
>>> qfail = Queue("failed", connection=Redis())
>>> qfail.count
8
>>> qfail.empty()
8L
>>> qfail.count
0

testキューがまだ存在する場合は、同じことを行うことができます。

rq-dashboardを使用したクリーンアップ

Rq-dashboardをインストールします。

$ pip install rq-dashboard

始めよう:

$ rq-dashboard
RQ Dashboard, version 0.3.4
 * Running on http://0.0.0.0:9181/

ブラウザで開く。

キューを選択します

赤いボタン「空」をクリックします

これで完了です。

Python関数Purgeジョブ

RQで使用されるコマンドで失敗する古いRedisを実行した場合でも、python code:

コードはキューの名前を取ります。ここで、はジョブIDです。

Usilg LPOPは、ジョブIDを1つずつ要求します。

ジョブIDにプレフィックス(デフォルトでは「rq:job:」)を追加すると、キーがあり、ここにジョブが保存されます。

各キーでDELを使用して、データベースジョブをジョブごとにパージします。

>>> import redis
>>> r = redis.StrictRedis()
>>> qname = "rq:queue:failed"
>>> def purgeq(r, qname):
... while True:
...     jid = r.lpop(qname)
...     if jid is None:
...         break
...     r.delete("rq:job:" + jid)
...     print jid
...
>>> purge(r, qname)
a0be3624-86c1-4dc4-bb2e-2043d2734b7b
3796c312-9b02-4a77-be89-249aa7325c25
ca65f2b8-044c-41b5-b5ac-cefd56699758
896f70a7-9a35-4f6b-b122-a08513022bc5
35
Jan Vlcinsky

-2016-

これで、コマンドラインからrqのemptyオプションを使用できます。

/path/to/rq empty queue_name

したがって、失敗したキューだけでなく、任意のキューを空にするために使用できます

8
Or Duan

redisにログインして、すべてのキューをクリアするだけです

ログインします

user @ user:〜$ redis-cli

このコマンドを入力してEnterキーを押します

[〜#〜] flushall [〜#〜]

そして、あなたは完了です

編集:これにより、redisに保存されているすべてのものが削除されます

1
ajack13

監視ツールrqinfoは、失敗したキューを空にすることができます。
rqがインストールされたアクティブなvirtualenvがあることを確認し、実行します

$ rqinfo --empty-failed-queue

見る rqinfo --help 詳細については。

1
ducu

上記の解決策のいずれも機能しませんでしたキューはキューに登録されていません

失敗したすべてのジョブをデフォルトのキューに移動して使用します

rq empty queue_name --url [redis-url]

0
rapid2share