特定のDelayed :: Jobをコンソールで実行するようにするにはどうすればよいですか?


95

なんらかの理由で、Delayed :: Jobはキューに入れることを決定しましたが、何度か再起動したとしても、何も実行せず、-9で強制終了して再起動しました。ジョブは実行されません。

/ consoleで特定のジョブを指定して、それを機能させることはできますか?

例:.. Delayed::Job.find(x).run


回答:


130

コンソールから特定のジョブを実行する方法に答える:

Delayed::Job.find(x).invoke_job

ただし、実行されたジョブの破棄など、他のことは実行されないことを覚えておく必要があります。ジョブ/タスクを実行するだけです。


4
回答の作者の注意を注意深く読んでください:「実行されたジョブの破棄など、他のことは実行されません」。私はそれを読んでおらず、夢中になっていたのでそう言います。@DavidTuiteの回答を
fguillen

163

次のようにすることもできます:

Delayed::Worker.new.run( Delayed::Job.find(x) ) 

いいね!それをありがとう!
旅行

26
これが最良の答えです。それが完了すると、ジョブが削除されます。ありがとう
m4risU 2014年

12
Delayed :: Worker.new.run(Delayed :: Job.find(id))
mrt

優れた。@ m4risUに同意します。
クリススコット

@mrtのコメントに同意します。正しいジョブを実行していることを確認してください
Jonny

0

Herokuでは「スタック」ジョブがありheroku restart、ワーカー/ジョブを再開するために実行する必要がありました。


前向きなコメントをありがとう;-) Herokuで質問した人、またはこの質問に来た人に問題があった可能性があります。
身代金
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.