1

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

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

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

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

4

1 に答える 1

0

ジョブ タイムアウト パラメータがあります。

job = q.enqueue(count_words_at_url, 'http://stackoverflow.com', timeout=180)

明示的に設定しない場合、デフォルトのタイムアウトは 180 です。

ジョブがタイムアウトすると、ジョブはfailedキューに移動します。

失敗したジョブを後で再キューに入れることができます。

from redis import Redis
from rq import Queue, get_failed_queue

r = Redis()
failed_queue = get_failed_queue(r)
print failed_queue.count
for job_id in failed_queue.job_ids:
    failed_queue.requeue(job_id)
于 2016-06-10T15:28:10.760 に答える