問題タブ [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.
python - results_ttl=0 の場合でも Redis がいっぱいになるのはなぜですか?
質問: ジョブの結果がすぐに破棄されると、redis がいっぱいになるのはなぜですか?
redis をキューとして使用して PDF を非同期的に作成し、結果をデータベースに保存しています。保存されているため、後でオブジェクトにアクセスする必要がないため、処理後に結果を Redis に保存しておく必要はありません。
結果が redis にとどまらないようにするために、次のように設定しTTL
ました0
。
問題は、redis ワーカーがジョブの有効期限がすぐに切れると言っていることです。
Redis はまだいっぱいになり、次のようにスローします。
ジョブの結果がまだ保存されていない場合に redis がいっぱいにならないように、redis / django-rq に設定する必要がある別のパラメーターはありますか?
アップデート:
この投稿に続いて、redis でジョブが失敗したためにメモリがいっぱいになる可能性があると思います。
このコード スニペットの使用:
以下は、redis のキーのダンプのペースト ビンです。
ここに投稿するには実用的であるには長すぎます。そのサイズは私の理論を支持しているようです。しかし、使用:
私が期待するようにredisをクリアしません。redis でキーのより正確なダンプを取得するにはどうすればよいですか? ジョブを正しくクリアしていますか?
python - 複数のワーカーが不明なサイズのジョブを完了したときに通知を受け取る方法は?
django-rqを使用して、Python で Web サイト クローラーを作成しようとしています。これまでのところ、私のワーカーは次のようになります。
- キューから次のページを取得します。
- データベースにページ レコードを作成します。設定し
status=1
ます。 - ページの内容をダウンロードして処理します。1 分ほどかかる場合があります。
- ページ内の各リンクについて
- リンクがすでにデータベースに登録されているかどうかを確認してください。
- そうでない場合は、新しいページ レコードを作成します。
status=0
リンクを設定してキューに追加します。
- for ループが終了したら、status=0 のページ数が 0 かどうかを確認します。0 の場合、ジョブは完了です。
status=1
ページが処理されたことを意味します。status=0
ページがまだ処理されていないことを意味します。
現在、このアルゴリズムは単一のワーカーで問題なく機能します。ただし、ジョブルーチンの終了が本来よりも早くトリガーされることがあるため、より多くのワーカーがいる場合はそうではありません。
このワーカーを実装する正しい方法は何ですか?
django - カスタム Django シグナルが機能しない
カスタム django シグナルに関連する、うまくいかない質問が他にもたくさんあることに気付きました。私を信じてください。私の個人的な状況をうまく機能させることができず、それらすべてを何度か読んだことがあります。
これが取り引きです:私はdjango-rqを使用して、特定のhttpリクエストによって開始される長いバックグラウンドプロセスを管理しています。そのバックグラウンド プロセスが完了したら、カスタム Django シグナルを起動して、django-rq でジョブの失敗/例外をチェックできるようにします。
INSTALLED_APPS リストにある 2 つのアプリケーションは、同じレベルにあります。app1 の内部には、ファイル signal.pyがあります。
また、ファイルjobs.py
次に、app2 の内部の views.pyで
フィードバックはまったく得られず、完全に途方に暮れています。私は実際にjobs.pyが実行されていることを知っています。したがって、信号を発生させる必要があるコードのブロックも実行されていることを知っています。簡単にするため) 詳細については、お気軽にお問い合わせください。できるだけ早く対応いたします。
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
使用することは可能ですか?item
parse_body
私のメインコード: (enqueue.py
とgrabber.py
は独立したスクリプトであり、Django アプリではありません。)
enqueue.py
グラバー.py
python - RQ AttributeError: 'module' オブジェクトに属性がありません
RQ でバックグラウンド ジョブを作成しようとしています。
このエラーが発生し続けますが、何かばかげたことをしているように見えますか?
'
python - Sentry への Django-RQ 例外の送信
バックグラウンド タスクを処理するために、Heroku アプリケーションで Django-RQ を使用しています。
バックグラウンド タスクでエラーが発生すると、Sentry に送信されません。
settings.py のログ設定は以下のとおりです。
私が間違っていることについてのヒントをいただければ幸いです。