問題タブ [python-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 - python-rq で rqworker を実行する方法
Webhook を受信して処理するために使い始めたばかりの Ubuntu ボックス (ngnix と uwsgi) に小さな Python フラスコ Web サーバーがあります。Webhook 処理の一部に電子メールの送信が含まれる場合がありますが、これにより遅延が発生し、Webhook を送信するサーバーへの応答がブロックされることに気付きました。
これを軽減する方法を研究しているときに、関数呼び出しをキューに入れ、すぐに Webhook に応答できるpython-rq (別名 rq) を発見しました。テストでは、これはうまく機能します。
サーバーでテストしており、rq を開始するrqworker
には、Web サイトと同じディレクトリで実行する必要があります。これはテストには最適ですが、実行を続けるためだけにサーバーにログインして rq を開始する必要はありません。
私が遭遇したいくつかのアイデア:
- python-rq ドキュメントにはスーパーバイザーについて言及されていますが、http://python-rq.org/patterns/supervisor/ですが、それほど多くのオーバーヘッドが必要かどうかはわかりません。
- 再起動を使用して、単純な cron ジョブでうまくいくでしょうか?
これは小さな内部専用サーバーです。私はそれを過度に設計したくはありません (私はすでにその方向に忍び寄っているように感じます)。
Web サイトのアプリケーション ディレクトリで rqworker を単独で実行するように設定するにはどうすればよいですか?
python - python-rq アプリでの DB ポーリングの回避
python-rq を使用して実行時間の長いジョブをスケジュールする Flask アプリケーションがあります。私の要件の 1 つは、ユーザーがいつでも実行するジョブの数を指定できることです。
ユーザーが現在実行中のジョブよりも小さい値を使用した場合、アプリはジョブを強制終了する必要はありませんが、ユーザーが制限を増やした場合に別のジョブを生成する必要があります。
ジョブを実行するには、rq ワーカーに時間がかかりますが、ジョブを子守する必要はなく、安全に実行して次のジョブに進むことができます。
私の問題は、初期セットアップ フェーズに時間がかかる場合があるため、ワーカーを 1 つだけ使用するのは理想的ではない可能性があることです。私をさらに悩ませているもう 1 つの問題は、このスキームを使用すると、rq ワーカーがデータベースをポーリングして、別のジョブを開始できるタイミングを知る必要があることです。これを設計するためのより良い方法はありますか?
python-3.x - python-rq rqworker を python 3 の UWSGI でアタッチされたデーモンとして ASCII エンコーディング エラーなしで実行するにはどうすればよいですか?
UWSGI で添付デーモンとして rqworker を実行しようとしています。これを行うには、config.ini ファイルに次を追加します。
その後、UWSGI は必要なときに rqworker を起動しようとしますが、ログに次のエラーが記録されます。
RuntimeError: Python 3 は環境のエンコーディングとして ASCII を使用するように構成されているため、Click はそれ以降の実行を中止します。軽減策については、Python 2 に切り替えるか、http://click.pocoo.org/python3/を参照してください。
bash から rqworker を正常に実行できますが、デーモンのエンコーディングが正しく設定されていないようです。
python - RQ AttributeError: 'module' オブジェクトに属性がありません
RQ でバックグラウンド ジョブを作成しようとしています。
このエラーが発生し続けますが、何かばかげたことをしているように見えますか?
'
python - RQ ワーカー/Redis/Flask の ImportError
この設定に問題があります。要約すると、ユーザーがフォームで送信を押すと、データが RQWorker と Redis に渡されて処理されます。
からのエラーrqworker
は
さまざまな方法で rqworker を起動してみました
ビュー.py
process_feed
期待どおりに機能するという関数がprocess_checks
あります。
RQ の代わりに以下の行を使用すると正常に動作するため、これが機能していることはわかっています。
奇妙なことに、VPS への SSH 接続を閉じる前に、これはすべて完全に機能していました。
Runningps -aux
は、redis が実行中であることを示す this を返します
redis を再起動しても何も起こらず、apache2 を再起動しても何も起こりません
私はこのガイドに正確に従いました。私が言ったように、VPSへのSSH接続を終了するまでこれは機能しました
違いがある場合は仮想環境で実行しています。WSGIファイル内でこれを呼び出しています
min_content.wsgi
'
これをスクリプトに追加することで、Redisサーバーが実行されていることを確認しました
ランニングredis-cli
リターン127.0.0.1:6379>
process_feed.py
python - Sentry への Django-RQ 例外の送信
バックグラウンド タスクを処理するために、Heroku アプリケーションで Django-RQ を使用しています。
バックグラウンド タスクでエラーが発生すると、Sentry に送信されません。
settings.py のログ設定は以下のとおりです。
私が間違っていることについてのヒントをいただければ幸いです。