web-dev-qa-db-ja.com

遅延ジョブがrails

遅延ジョブが実行されているかどうかを表示する必要があるステータスページを設計しています。コードでそれを見つける方法を手伝ってください。

Rails 3.0.20、Ruby 1.8.7(2011-06-30 patchlevel 352)、delayed_job 3.0.4

13
Virtual

Rails 5.xを使用すると、サーバーにSSHで接続し、アプリ内の/ currentフォルダーに移動して次のコマンドを実行できます。

Rails_ENV=production bin/delayed_job status
16
pastullo

本番モードでチェックしている場合は、Rails_ENV =本番スクリプト/ delayed_jobステータスを使用できます

13
Niket

Delay_jobが実行されているかどうかを確認する最も簡単な方法は、_locked_by_フィールドで確認することです。

このフィールドには、ワーカーまたはプロセスのロック/ジョブの処理が含まれます。

実行中のジョブがある場合、Delayed::Job.where('locked_by is not null')を実行するといくつかの結果が得られます。

さらに、clockwork taskこのクエリを実行して、ステータスを確認することもできます。

お役に立てれば。

6
Ron

現在、delayed_job daemonが常に実行されていることを確認するために私が考えることができる最善の方法は、デーモンが実行されているかどうかをチェックするRailsアプリケーションにinitializerを追加することです。実行されていない場合、initializerdaemonを開始します。それ以外の場合は、そのままにしておきます。

したがって、問題は、Delayed_Job daemonがスクリプト内から実行されていることをどのように検出するかということです。

簡単な方法-

デーモンPID file(File.exist?...)の存在を確認します。そこにある場合は、実行されていると想定し、そうでない場合は起動します。

4
My God

ジョブのステータスなどを確認するには、 delayed_job_web gemを使用できます。そして、それが常に実行されていることを確認するために、monitをインストールします。 ここに railscast。 ここに delayed_jobのmonitを構成する方法の詳細

2
benchwarmer
#!/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が実行されているかどうかを確認するにはどうすればよいですか?

0
Zernel