遅延ジョブが実行されているかどうかを表示する必要があるステータスページを設計しています。コードでそれを見つける方法を手伝ってください。
Rails 3.0.20、Ruby 1.8.7(2011-06-30 patchlevel 352)、delayed_job 3.0.4
Rails 5.xを使用すると、サーバーにSSHで接続し、アプリ内の/ currentフォルダーに移動して次のコマンドを実行できます。
Rails_ENV=production bin/delayed_job status
本番モードでチェックしている場合は、Rails_ENV =本番スクリプト/ delayed_jobステータスを使用できます
Delay_jobが実行されているかどうかを確認する最も簡単な方法は、_locked_by
_フィールドで確認することです。
このフィールドには、ワーカーまたはプロセスのロック/ジョブの処理が含まれます。
実行中のジョブがある場合、Delayed::Job.where('locked_by is not null')
を実行するといくつかの結果が得られます。
さらに、clockwork taskこのクエリを実行して、ステータスを確認することもできます。
お役に立てれば。
現在、delayed_job daemon
が常に実行されていることを確認するために私が考えることができる最善の方法は、デーモンが実行されているかどうかをチェックするRailsアプリケーションにinitializer
を追加することです。実行されていない場合、initializer
はdaemon
を開始します。それ以外の場合は、そのままにしておきます。
したがって、問題は、Delayed_Job daemon
がスクリプト内から実行されていることをどのように検出するかということです。
簡単な方法-
デーモンPID file
(File.exist?...)の存在を確認します。そこにある場合は、実行されていると想定し、そうでない場合は起動します。
ジョブのステータスなどを確認するには、 delayed_job_web gemを使用できます。そして、それが常に実行されていることを確認するために、monitをインストールします。 ここに railscast。 ここに delayed_jobのmonitを構成する方法の詳細
#!/usr/bin/env Ruby
pid = ARGV[0].to_i
begin
Process.kill(0, pid)
puts "#{pid} is running"
rescue Errno::EPERM # changed uid
puts "No permission to query #{pid}!";
rescue Errno::ESRCH
puts "#{pid} is NOT running."; # or zombied
rescue
puts "Unable to determine status for #{pid} : #{$!}"
end
チェック JavaまたはLinux上のJRubyを使用して別のプロセスIDが実行されているかどうかを確認するにはどうすればよいですか?