問題タブ [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.

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 投票する
0 に答える
953 参照

python - Flask を使用して RedisCloud で Heroku に RQ ワーカーをセットアップする方法

フラスコアプリ用にherokuでpython rqワーカーを作成しようとしています。heroku のドキュメントには、ワーカーを作成するための次のサンプル コードが記載されています。

https://devcenter.heroku.com/articles/python-rq#create-a-worker

問題: RedisCloud を使用していますが、 REDISTOGO_URL を REDISCLOUD_URL に置き換えても機能しません。ローカルでの読み込みは問題ありませんが、heroku にアップロードすると、ログにまだ localhost に接続しようとしていることが表示されます。

RedisCloudのドキュメントには、特にフラスコではなく、Python での作業のみがリストされているため、以下のコードは私の状況をまったく変更しませんでした:

REDISCLOUD_URL 変数が heroku に存在することを確認しました:

形式:

redis.from_url() 関数が何をするのか、またはそれが受け入れるパラメータについてのドキュメントは見つかりません。

このワーカーが localhost ではなく heroku のサーバー var を参照するようにするには、ここで何が欠けていますか?

0 投票する
3 に答える
3580 参照

python - ジョブに応じて結果を渡す - python rq

ジョブの結果をそれに依存するジョブに渡すにはどうすればよいですか?

私が現在行っているのは、最初のジョブの ID を 2 番目のジョブに渡すことです。

secondJobそして、最初のジョブを取得して結果を取得する内部

これは推奨される方法ですか?最初のジョブの結果を2番目に直接渡すために使用できる他のパターンはありますか?

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

javascript - JavaScript を使用した Python RQ キューイング

JavaScript を使用して Python RQ のタスクをキューに入れようとしています。そのために、RQ が Redis で何をするかを監視しました。特に、入力引数などを含む、実行するタスクを見つける場所を示すピクル リストを格納します。ここでは、RQ のホームページにある例を使用しています。次の文字列 (pickled リスト) を格納する場合:

JavaScript では、リテラル\x80\x85. \xc2\x80それらをandに置き換えますが、\xc2\x85この動作を停止する理由と方法を理解できません。残りの文字列は、期待どおり Redis に送られます。追加のリテラルは、rqworker、具体的には pickle が正しく機能するのを妨げます。

node と node_redis を使用しています。

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

python - Supervisord との RQ 同時実行性は?

すべて、私は、RQ ワーカーが Supervisord を使用して同時に実行するように「強制」しようとしています。rq-dashboard には 3 つのワーカー、3 つの PID、および 3 つのキュー (ワーカー/PID ごとに 1 つ) が表示されているため、私のセットアップ Supervisord セットアップは正常に機能しているようです。スーパーバイザーのセットアップは次のとおりです (ワーカー 1 のセットアップのみを示し、この下にさらに 2 つのワーカーが定義されています)。

Supervisord の下で実行されている RQ ワーカー

問題は、3 つのジョブを同時に送信すると、実行にかかる合計時間が 1 つのタスクの 3 倍になることです (つまり、合計時間はタスクの数に比例し、これは x4、x5 などにスケーリングされます)。同時実行は利用できないようです。また、新しいジョブを最小限の開始済みジョブとキュー済みジョブでキューに送信することで、基本的な負荷分散を実装しました。これは正常に機能します (ジョブはキュー間で均等に分散されていることが観察されます)。

この設定で同時実行が許可されないのはなぜですか?

不足しているセットアップに関する考慮事項はありますか?

PY3 に移行し、gevent 自体は PY3 ではまだサポートされていないため、rq-gevent-worker パッケージ (以前は同時実行/RQ でうまく機能していた) は使用できなくなったことに注意してください。しかし、これにより、同時実行が可能であるという手がかりが得られます。

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

python - セロリの進行中のタスクと対話する

と に基づく分散アーキテクチャがrabbitMQありCeleryます。問題なく複数のタスクを並行して起動できます。スケーラビリティは良好です。

ここで、タスクをリモートで制御する必要があります: PAUSE、RESUME、CANCEL。私たちが見つけた唯一の解決策は、Celery タスクで、DB 要求の後にコマンドに応答する別のタスクへの RPC 呼び出しを作成することです。Celery タスクと RPC タスクは同じマシン上になく、RPC タスクのみが DB にアクセスできます。

それを改善し、進行中のタスクと簡単にコミュニケーションをとる方法について何かアドバイスはありますか? ありがとうございました

編集: 実際には、下の図のようなことをしたいと考えています。Blue構成またはを行うのは簡単ですが、Orange両方を同時に行う方法はわかりません。 ここに画像の説明を入力 ワーカーはコモンにサブスクライブしており、各ワーカーは交換でJobs queue独自に宣言されています。Admin queue

編集: でこれが不可能な場合はCelerypython-rq.