問題タブ [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 投票する
1 に答える
514 参照

python - RethinkDB ドキュメントを RQ キューにプッシュするときの UnpickleError

RethinkDB データベースから取得しているドキュメントには、タイムスタンプが含まれています ( type の特別な値をdatetime.datetime持つ Python オブジェクトとして表されます) 。tzinforethinkdb.ast.RqlTzinfo

それを RQ タスク キューにプッシュすると、タスクがタイムスタンプを unpickle しようとすると、反対側で UnpickleError が発生します。

RQ ワーカーからの出力:

キューにプッシュする前にタイムスタンプをエポック時間に置き換えることで問題を回避することができましたが、これは一時的な解決策であり、タイムゾーンなどを処理する必要があることを考えると、状況が少し複雑になります。datetimeオブジェクトをDBに戻す前に、エポック時間をオブジェクトに戻します。

問題はどこにあるのでしょうか (RethinkDB のRqlTzinfoオブジェクトか、RQ の unpickling 実装か)、これは正当なバグですか、それとも単に実装が悪いのでしょうか?

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

python - 重複するバッチ プロセスの RQ ワーカーをどのように処理する必要がありますか?

RQ / Redis を使用して、django サイトで実行時間の長いジョブの非同期実行を構築し始めました。私は次のようなことをしたいと思っています:

  • モデルのインスタンスごとに 1 つのキューが必要です。このモデルは、API ユーザー アカウントのようなものと考えることができます (多くはありません。多くても 15 から 20 です)。

  • タスクのバッチ (10 ~ 500 の範囲) をキュー全体に均等に分散します。最初のバッチが完了する前に、複数のバッチを追加できます。

  • バッチごとに、アクティブに処理されていないキューごとにワーカーを起動したいと思います。これらのワーカーをバッチ モードで実行して、タスクがなくなるとシャットダウンするようにします。

  • それらをバッチモードで実行することはできず、常にすべてのキューで作業を行ったり、作業をリッスンしたりしていました。これに関する問題は、キューを動的に追加および削除できるようにしたいため、バッチごとに使用可能なキューを起動する方がよいことです。

タスクを複数のキューに分散しているのは奇妙に思えるかもしれませんが、その理由は、同じキュー内の各タスクを、使用しているサービスに応じてレート制限/調整する必要があるためです (API と考えてください)。レート制限がありますが、各キューは異なるアカウントを表します)。しかし、私の目的では、タスクが実行されているアカウントに違いはないので、すべてのアカウントで並列化することもできます。

私が直面している問題は、ワーカーを開始して既に処理中のキューを指定すると、そのキューで 2 つのワーカーが独立して動作するようになり、予想されるスロットリング率が半分になることです。そのキューで動作しているワーカーがまだない場合にのみワーカーを開始するにはどうすればよいですか? おそらくこれに対するハックな解決策を見つけることができますが、「正しい」方法で処理したいと思います。キューの経験があまりないので、質問する必要があると思いました。

キューを動的に制御できるように、独自のワーカー クラスを既に実装しているため、そのキューが既に処理されている場合に新しいワーカーが与えられないロジックを追加する方法が必要です。私のワーカーの単純なバージョンは次のとおりです。

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

python-rq - python-rq で明示的にキューに優先順位を与える方法

python-rq を試していますが、明示的にキューに優先順位を付ける方法がわかりません。

優先順位は、ワーカーが起動されたときに定義された順序に基づいていますか?

queueA は、queueB および queueC と比較して優先されますか?

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

fabric - Fabric で python rq プロセスを開始する方法

最も基本的な python デプロイメントを自動化するために Fabric を使い始めたところです。スタックの一部は、redis 上のキュー ソリューションとしてrq ( http://python-rq.org/ ) を使用するジョブ サーバーです。説明できない何らかの理由で、rq-dashboard および rqworker コマンドがファブリック内で開始されません。Fabric が使用している正確な行をコピーして貼り付けることができ、問題なく動作しますが、Fabric では失敗します。

ファブリック コードは次のようになります。

スクリプト内で rq コマンドを実行するなど、考えられるすべてのバリエーションを試しましたが、どれも機能しません。奇妙なことに、それらをスクリプトに入れ (これらの行だけで)、最後に「ps aux | grep rq」を含めると、rq プロセスが表示されます...しかし、fab スクリプトが終了したら、チェックしますボックス、プロセスはなくなりました。

どんな助けでも大歓迎です、ありがとう。

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

python - 長時間実行される redis ジョブはワーカーを生成し、それ自体を再キューイングできますか?

ジョブがワーカーを明け渡し、それ自体をキューの最後に戻すことは可能ですか?

redis キュー内のジョブは順次処理され、実行時間の長いジョブが CPU を占有している可能性があります。十分な時間がかかり、キュー内の他のアイテムに譲るべきであると判断するパターンはありますか?

実装requeue_jobには規定があることに注意してください。rqジョブが「失敗」した場合。おそらく、それはそれを行う方法をハックする方法ですか?

それとも、活用できるジョブのタイムアウトがあるのでしょうか? それとも、この思考の枝は単なる別の行き止まりですか?

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

python - Python rq ジョブ キュー - time.sleep()

RQ を使用してキューに入れられたジョブを実行しようとしていますが、次の例を見ています。

なるほどtime.sleep(2)- そして、これが指定する必要があるかどうか疑問に思っていました. 私がスケジュールしたジョブは、完了するまでに (時々) 1 時間かかることがあります (これはジョブごとに異なります)。

RQ は、実行時間が大幅に変化するようなジョブにまだ適していますか?

どんな提案も素晴らしいでしょう!