【问题标题】:Schedule one-time jobs in Rails在 Rails 中安排一次性作业
【发布时间】:2014-08-23 23:24:43
【问题描述】:

我需要在 Rails 中安排一个作业,其中一个方法将在模型上调用。我知道有几个基于 cron 的 gem,但这些都是用于重复工作的,因为我只需要在设定的时间执行一次工作。有没有宝石可以做到这一点?

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-4 cron


【解决方案1】:

如果您部署到 Heroku,则有一个调度程序插件。

否则,您可以使用 Sidekiq + Sidetiq 来完成您要查找的内容。

【讨论】:

  • 根据 Sidetiq wiki,它适用于重复性工作,而不是一次性工作。这是我要避免的。
  • 与heroku调度程序相同。
【解决方案2】:

Rails 4.2 将具有用于调度作业的 Active Job 框架。您可以在 Rails 4.1 中使用 Active Job gem。它充当多个排队系统的标准化包装器,包括 Sidekiq 和 Resque(两者都需要 Redis 来处理延迟的作业)。使用 Active Job 可以让您在必要时灵活地更换排队系统。

您可以像这样使用 Active Job 安排作业:

MyJob.enqueue_at(5.hours.from_now, record)

Rails 维护人员打算将此作为调度作业的标准机制。

查看rails-mailinglist-signup 示例应用程序,了解如何使用活动作业。

【讨论】:

  • 丹尼尔的作品的忠实粉丝。您是否曾经将 ActiveJob 用作 4.1 的 gem,还是直接进入 Rails 4.2 使用它?当我尝试将它用作 4.1 的 gem 并且无法确定它是否可能时,我收到了 uninitialized constant ActiveJob
  • 在发布 Rails 4.2.0.beta1 之后,ActiveJob 不再作为独立的 gem 提供。它现在已合并到 Rails 4.2 中。我正在使用 Rails 4.2。不知道ActiveJob 4.1能不能用。
猜你喜欢
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 2016-08-14
  • 2011-12-22
  • 1970-01-01
  • 2019-11-24
相关资源
最近更新 更多