ruby-on-rails - Rails 中的动态作业调度

标签 ruby-on-rails scheduled-tasks

我已经查看了许多 Rails 的调度库,并且我需要一些帮助来选择一个,因为似乎没有一个库能够完全满足我的要求。这是一个相当常见的用例:

我们有许多报告,我们希望用户可以设置何时安排通过邮件向他们发送特定报告的时间和频率。用户需要能够查看他们已计划的报告列表,并且应该能够取消或更改现有的计划报告。计划的作业应该在服务器重新启动后继续存在。目前,我并不担心只在 Rails 服务器集群中的单个节点上运行作业。

  • Rufus scheduler看起来不错,但我必须编写代码来保存作业并在 Rails 重新启动时重新启动它们。
  • Delayed_job处理持久性,但我看不到如何定期运行作业,除非可能在作业运行时的新时间重新安排作业
  • resqueresque-scheduler看起来非常接近,但我想避免必须将 redis 添加到我们的堆栈中,并且我可能最终会尝试在 Rails 中重新实现一些 UI,以便用户可以添加/删除/管理作业,如果可以的话那就太好了使用与应用程序的其余部分相同的 ActiveRecord 后端。

最佳答案

我建议使用 Delayed::Job 来处理实际作业,因为它会自动为您的用户处理持久性,并且您可以使用 delayed_jobs 表进行管理(允许用户修改/删除作业)他们已经开始了)。

当涉及到自动调度作业时,您可以使用Clockwork gem 。它是由 Heroku 构建的(如果我没记错的话),本质上允许您在 ruby​​/rails 应用程序中模拟/替换 cron

有了上面的两个库,您就已经涵盖了所有基础。

关于ruby-on-rails - Rails 中的动态作业调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7030975/

相关文章:

ruby-on-rails - 使用 Remotipart 解析错误

ruby-on-rails - 在 rails 4.2 中从网络上的另一台机器访问本地主机

python - 使用 Python 多处理以固定速率安排任务

android - 状态栏通知自动启动 Activity

ruby-on-rails - 我如何使用带有 Ajax 的下拉框在 Rails 中呈现部分内容?

ruby-on-rails - 时间戳未在 RoR 应用程序中更新

ruby-on-rails - RAILS 6 - 如何使用 EasyAutocomplete

wpf - Powershell WPF GUI 作为计划任务不可见

multithreading - 在Linux内核中,以下方式创建实时kthread是否正确?

java - 在运行时在创建的 spring bean 中使用 @Scheduled 注释