問題タブ [django-rq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1523 参照

python - results_ttl=0 の場合でも Redis がいっぱいになるのはなぜですか?

質問: ジョブの結果がすぐに破棄されると、redis がいっぱいになるのはなぜですか?

redis をキューとして使用して PDF を非同期的に作成し、結果をデータベースに保存しています。保存されているため、後でオブジェクトにアクセスする必要がないため、処理後に結果を Redis に保存しておく必要はありません。

結果が redis にとどまらないようにするために、次のように設定しTTLました0

問題は、redis ワーカーがジョブの有効期限がすぐに切れると言っていることです。

Redis はまだいっぱいになり、次のようにスローします。

ジョブの結果がまだ保存されていない場合に redis がいっぱいにならないように、redis / django-rq に設定する必要がある別のパラメーターはありますか?


アップデート:

この投稿に続いて、redis でジョブが失敗したためにメモリがいっぱいになる可能性があると思います。

このコード スニペットの使用:

以下は、redis のキーのダンプのペースト ビンです。

http://pastebin.com/Bc4bRyRR

ここに投稿するには実用的であるには長すぎます。そのサイズは私の理論を支持しているようです。しかし、使用:

私が期待するようにredisをクリアしません。redis でキーのより正確なダンプを取得するにはどうすればよいですか? ジョブを正しくクリアしていますか?

0 投票する
2 に答える
1864 参照

python - 複数のワーカーが不明なサイズのジョブを完了したときに通知を受け取る方法は?

django-rqを使用して、Python で Web サイト クローラーを作成しようとしています。これまでのところ、私のワーカーは次のようになります。

  1. キューから次のページを取得します。
  2. データベースにページ レコードを作成します。設定しstatus=1ます。
  3. ページの内容をダウンロードして処理します。1 分ほどかかる場合があります。
  4. ページ内の各リンクについて
    1. リンクがすでにデータベースに登録されているかどうかを確認してください。
    2. そうでない場合は、新しいページ レコードを作成します。status=0リンクを設定してキューに追加します。
  5. for ループが終了したら、status=0 のページ数が 0 かどうかを確認します。0 の場合、ジョブは完了です。

status=1ページが処理されたことを意味します。status=0ページがまだ処理されていないことを意味します。

現在、このアルゴリズムは単一のワーカーで問題なく機能します。ただし、ジョブルーチンの終了が本来よりも早くトリガーされることがあるため、より多くのワーカーがいる場合はそうではありません。

このワーカーを実装する正しい方法は何ですか?

0 投票する
2 に答える
1490 参照

django - カスタム Django シグナルが機能しない

カスタム django シグナルに関連する、うまくいかない質問が他にもたくさんあることに気付きました。私を信じてください。私の個人的な状況をうまく機能させることができず、それらすべてを何度か読んだことがあります。

これが取り引きです:私はdjango-rqを使用して、特定のhttpリクエストによって開始される長いバックグラウンドプロセスを管理しています。そのバックグラウンド プロセスが完了したら、カスタム Django シグナルを起動して、django-rq でジョブの失敗/例外をチェックできるようにします。

INSTALLED_APPS リストにある 2 つのアプリケーションは、同じレベルにあります。app1 の内部には、ファイル signal.pyがあります。

また、ファイルjobs.py

次に、app2 の内部の views.py

フィードバックはまったく得られず、完全に途方に暮れています。私は実際にjobs.pyが実行されていることを知っています。したがって、信号を発生させる必要があるコードのブロックも実行されていることを知っています。簡単にするため) 詳細については、お気軽にお問い合わせください。できるだけ早く対応いたします。

0 投票する
2 に答える
1029 参照

python - django-rq enqueue のパラメーターとして必須ではない組み込みオブジェクトを渡す方法

更新: でクラスを渡すことさえできないことがわかりましたenqueue。これを行うことは可能ですか?


itemでオブジェクト (Django のモデル) をパラメーターとして渡したいのですqueue.enqueue(grabber.parse_body, item)が、rqworkerこの例外が発生します (使用するかどうかにかかわらず、アイテムをパラメーターとして渡そうとすると):

ファイル "/usr/local/lib/python3.4/dist-packages/rq/job.py"、53 行目、unpickle で UnpickleError('Could not unpickle.', pickled_string, e) rq.exceptions.UnpickleError: ( 'Could unpickle.', ImproperlyConfigured('INSTALLED_APPS の設定を要求しましたが、設定が構成されていません。設定にアクセスする前に、環境変数 DJANGO_SETTINGS_MODULE を定義するか、settings.configure() を呼び出す必要があります。',))

それparse_bodyが何であるかわからないようitemですか?

アイテムの id をパラメーターとして渡してから、 で id を処理できることはわかっていますが、これをで直接parse_body使用することは可能ですか?itemparse_body


私のメインコード: (enqueue.pygrabber.pyは独立したスクリプトであり、Django アプリではありません。)

enqueue.py

グラバー.py

0 投票する
8 に答える
4378 参照

python - RQ AttributeError: 'module' オブジェクトに属性がありません

RQ でバックグラウンド ジョブを作成しようとしています。

このエラーが発生し続けますが、何かばかげたことをしているように見えますか?

'

0 投票する
1 に答える
741 参照

python - Sentry への Django-RQ 例外の送信

バックグラウンド タスクを処理するために、Heroku アプリケーションで Django-RQ を使用しています。

バックグラウンド タスクでエラーが発生すると、Sentry に送信されません。

settings.py のログ設定は以下のとおりです。

私が間違っていることについてのヒントをいただければ幸いです。