私は尋ねると少し愚かだと感じますが、それはdocumentation for RQのようには見えません。私はそれに何千もの項目を含む「失敗した」キューを持っており、私はDjango管理インターフェースを使ってそれをクリアしたい。管理インターフェースはそれらをリストし、それらを個別に削除して再キューすることができますが、私はジャンゴシェルにダイブする必要があるとは信じられません。Django RQジョブをキューからクリアするには?
私は何が欠けていますか?
私は尋ねると少し愚かだと感じますが、それはdocumentation for RQのようには見えません。私はそれに何千もの項目を含む「失敗した」キューを持っており、私はDjango管理インターフェースを使ってそれをクリアしたい。管理インターフェースはそれらをリストし、それらを個別に削除して再キューすることができますが、私はジャンゴシェルにダイブする必要があるとは信じられません。Django RQジョブをキューからクリアするには?
私は何が欠けていますか?
redis-cliはFLUSHDBを許可しています。ローカル環境では、私はbizzallionジョブを生成します。
Djangoを統合して、私は更新します。ちょうど$ 0.02を追加する。唯一のRedisで失敗したリストのキーではなく、仕事のキー自体をクリア
import django_rq
q = django_rq.get_failed_queue()
q.empty()
しかし、私のテストでは、ということ:
Queue
クラスは次のようにアクセスすることができempty()
方法があります。あなたの何千もの仕事はまだRedisの記憶を占めています。起こってから、あなたが個別のジョブを削除しなければならないことを防ぐために:
import django_rq
q = django_rq.get_failed_queue()
while True:
job = q.dequeue()
if not job:
break
job.delete() # Will delete key from Redis
をadminインタフェースでのボタンを持つためとして、あなたはadmin/base_site.html
を拡張django-rq/templates/django-rq/jobs.html
テンプレートを変更する必要があるだろう、と与えていないようですカスタマイズのための部屋。
その2番目のスニペットは巨大なので、それまでは残っているキーでメモリリークが発生した理由を理解できませんでした。私が持っていたようなジョブをすでにデキューしている人は、python-rqで鍵にアクセスできなくなりますので、conn = redis.from_url(redis_url)を使用してください。 conn.keys()メソッドを使用して削除の対象に戻します。 –
@CharlesOffenbacher上記のスニペットを理解しているかどうかはわかりません。上の両方のコードスニペットを実行する必要があると言っていますが、最初に2番目のスニペットを実行し、2番目のスニペットを2番目に実行します。ありがとう。 – William
@Robert私はあなたが2番目のスニペットを使うべきだと考えます。最初のコードスニペットは、実際に失敗したジョブそのものではなく、失敗したジョブを追跡するリストだけをクリアします。 –
これは、失敗していないジョブに影響しませんか? – Joe
flushdbを呼び出した後、私のdjangoとredisサーバーを再起動すると、既存のジョブがキューにジャンプする理由は何ですか? – andyzinsser
@Joeは一般的です。現在のジョブは消えます。 –