检查延迟作业是否在rails中运行

Vir*_*ual 12 ruby-on-rails delayed-job ruby-on-rails-3

我正在设计一个状态页面,我需要显示延迟的作业是否正在运行.请帮我一个在代码中找到它的方法.

我使用的是Rails 3.0.20,ruby 1.8.7(2011-06-30 patchlevel 352)和delayed_job 3.0.4

pas*_*llo 15

使用Rails4,您可以进入服务器并进入应用程序中的/ current文件夹并运行:

RAILS_ENV=production bin/delayed_job status
Run Code Online (Sandbox Code Playgroud)


小智 11

如果您正在检查生产模式,则可以使用RAILS_ENV =生产脚本/ delayed_job状态


Ron*_*Ron 5

检查delay_job是否正在运行的最简单方法是在locked_by字段中检查。

该字段将包含工作者或进程锁定/处理作业。

Delayed::Job.where('locked_by is not null') 如果有作业正在运行,则运行会给您一些结果。

除此之外,您还可以执行一个发条任务来执行此查询,以检查状态。

希望这可以帮助。


My *_*God 4

目前,我能想到的确保delayed_job daemon始终运行的最佳方法是向我们的 Rails 应用程序添加一个initializer来检查守护进程是否正在运行。如果它没有运行,则initializer启动daemon,否则,它就保持原样。

因此,现在的问题是我们如何检测正在Delayed_Job daemon从脚本内部运行?

最简单的方法——

检查守护进程是否存在PID file(File.exist?...)。如果它在那里,则假设它正在运行,否则启动它。