Techioz Blog

Redisを使用してキューに入れられたジョブをresqueで再実行する方法

概要

現在、Resque と redis を使用してジョブをスケジュールしましたが、ジョブの実行予定時刻にワーカーがいないため、ジョブが実行されないという問題に直面しています。現在、ジョブはエンキューされた状態のままです。

Redis でジョブのタイムスタンプを更新して、欠落したジョブを選択するために別のジョブをスケジュールせずに再実行できるようにする方法はありますか?

欠落しているすべての一意の job_id を見つけようとしましたが、job_id を使用して Redis 内のデータを取得できませんでした

解決策

同じジョブを再度実行する場合は、resque-retry を試してください。

Redis のキー値を自分で変更したい場合 (一貫性と競合状態のため推奨されません)

これをredis-cli経由で実行してみてください。 LINDEXコマンド、 これにより項目の値が取得され、後で使用するために保存されます。

次に、LREM を使用してキューから削除します。

ここで、前のステップのタイムスタンプを更新します (これは単なる JSON 文字列化です)。次に、LPUSH コマンドを使用してタイムスタンプをキューにプッシュし戻す必要があります。

redis-cli コマンドの詳細については、ここを確認してください