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)
检查delay_job是否正在运行的最简单方法是在locked_by字段中检查。
该字段将包含工作者或进程锁定/处理作业。
Delayed::Job.where('locked_by is not null') 如果有作业正在运行,则运行会给您一些结果。
除此之外,您还可以执行一个发条任务来执行此查询,以检查状态。
希望这可以帮助。
目前,我能想到的确保delayed_job daemon始终运行的最佳方法是向我们的 Rails 应用程序添加一个initializer来检查守护进程是否正在运行。如果它没有运行,则initializer启动daemon,否则,它就保持原样。
因此,现在的问题是我们如何检测正在Delayed_Job daemon从脚本内部运行?
最简单的方法——
检查守护进程是否存在PID file(File.exist?...)。如果它在那里,则假设它正在运行,否则启动它。