gpt4 book ai didi

jruby on rails 调度选项

转载 作者:行者123 更新时间:2023-12-03 23:50:09 25 4
gpt4 key购买 nike

我在 Rails 上使用 JRuby 1.5.6 为自己构建一个应用程序,该应用程序将定期消失并检索我订阅的任何 RSS 播客。

我选择 JRuby 主要是因为我熟悉 Java,希望利用 Rails 框架,最重要的是,当 Ruby 不能满足我的要求时,我能够用 Java 执行“繁重”的任务。到目前为止(我仍处于开发的早期阶段),这种混合方法一直运行得非常好。

我现在需要将定期和长时间运行的任务调度到后台进程。我的要求是拥有一个数据库支持的调度系统,理想情况下,该系统具有良好的文档记录、当前维护和清洁。

我现在的问题是,经过多天研究合适的自 gem 打包解决方案后,由于我使用 JRuby,我似乎没有什么选择。

我尝试过的一些 gem ......

rufus 调度程序

在我对它的界面和文档感到满意之前使用过它,但是缺乏数据库持久性,因此对我的要求来说是一个交易破坏者。

延迟作业

我理想的解决方案是delay_job。良好的文档,仍在维护和数据库支持,但是,由于 ObjectSpace 被关闭(但是我们可以通过重新启用来解决这个问题)在 JRuby 下中断,但更致命的是对守护进程 gem 的依赖会抛出“fork is unsafe and disabled由于 JRuby 实现中的限制,默认为 JRuby”错误。

github 上有一个不依赖守护进程的分支,但是我不高兴从主开发分支切换到分支,而且我仍然遇到 ObjectSpace 问题,我不确定它的性能影响。

quartz -jruby

虽然之前有各种 quartz 基 gem ,this very recent offering是提供光滑的 ruby​​-like 界面的另一种尝试。然而,文档很少,我不确定这是否可以由数据库支持,我的直觉是它不是。

问题

虽然我在这里只强调了 3 个选项,但我知道还有其他选项可用。然而,我无法找到一个解决方案来勾选所有 3 个需求框(文档、维护、数据库支持)。

所以问题是...

有没有其他人遇到这种情况并提出解决方案?

有没有人设法让 delay_job 以任何形式工作?

有没有更好的解决方案被我忽略并满足我的需求?

最佳答案

我们在生产环境中使用了 JRuby 下的 delay_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

并以操作系统相关的方式对其进行守护。在Linux上,
nohup jruby -S rake product:dw > $log_dir/delayed_job_console.log  2>&1 &

关于jruby on rails 调度选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4389603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com