Phi*_*ler 13 scheduling jruby jrubyonrails
我在Rails上使用JRuby 1.5.6来构建一个应用程序,它会定期消失并检索我订阅过的任何RSS播客.
我选择JRuby主要是因为我熟悉Java,希望利用Rails框架,最重要的是,当Ruby达不到我的要求时,我能够用Java执行"繁重的"任务.到目前为止(我还处于开发的早期阶段),这种混合方法一直运行得非常好.
我现在正处于需要将后续和长期运行任务的调度实施到后台进程的程度.我的要求是拥有一个数据库支持的调度系统,理想情况下,该系统记录良好,当前维护和清理.
我现在的问题是,经过多天研究合适的自我宝石包装解决方案后,由于我使用JRuby,我似乎只剩下很少的选择.
我试过的一些宝石......
rufus调度程序
在使用它之前我对它的接口和文档感到满意,但是缺乏数据库持久性,因此对我的要求造成了破坏.
delayed_job的
我理想的解决方案是delayed_job.然而,由于ObjectSpace被关闭(但我们可以通过重新启用来解决这个问题),但仍然维护和数据库支持的良好文档在JRuby下中断了,但是更加致命的依赖于守护进程gem会导致"fork不安全并且禁用默认情况下,JRuby"由于JRuby实现中的限制而导致错误.
在github上有一个没有依赖守护进程的分支,但是我不满意从主开发分支切换到一个分支,我仍然留下了ObjectSpace问题,我不确定它的性能影响.
石英的JRuby
虽然之前有过各种石英宝石,但这一最新产品是另一种提供光滑的类似红宝石的界面的尝试.然而,文档很少,我不确定这是否可以支持数据库,我的直觉是它不是.
问题
虽然我在这里只突出了3个选项,但我知道还有其他选项可用.然而,我无法找到解决方案来勾选所有3个需求框(文档,维护,数据库支持).
所以问题是......
有没有其他人处于这种情况并想出一个解决方案?
有没有人设法让delayed_job以任何形式工作?
有没有更好的解决方案,我忽略了并满足了我的需求?
我们在生产环境中使用 JRuby 下的 Delayed_job (collectiveidea/v1.8.4) 已经一年多了。我们没有启用 ObjectSpace,也没有使用守护进程 gem。
创建了一个简单的 rake 任务
namespace :product do
desc "Start Delayed Job Worker"
task :dw => :environment do
Delayed::Worker.new.start
end
end
Run Code Online (Sandbox Code Playgroud)
并以依赖于操作系统的方式对其进行守护进程。在Linux上,
nohup jruby -S rake product:dw > $log_dir/delayed_job_console.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)