【问题标题】:Heroku Scheduler with Custom Intervals using "simple_scheduler"使用“simple_scheduler”的具有自定义间隔的 Heroku 调度程序
【发布时间】:2017-10-11 17:51:06
【问题描述】:

我想在每个星期六晚上 11.45 点运行一个调度器,但是如果使用 whenever gem 它将在 heroku 中不支持,我们如何编写带有自定义间隔的 Heroku 调度器?

答案:

Simple Scheduler 是一个调度插件,旨在与 Sidekiq 和 Heroku Scheduler 一起使用。它使您能够在任何时间间隔调度任务,而无需添加时钟进程。 Heroku Scheduler 只允许您每 10 分钟、每小时或每天安排一次任务。

第 1 步:宝石“simple_scheduler” 第 2 步:捆绑 第 3 步:在 Rails 项目中创建文件 config/simple_scheduler.yml:

# Global configuration options. These can also be set on each task.
queue_ahead: 360 # Number of minutes to queue jobs into the future
tz: nil # The application time zone will be used by default if not set

# Runs once every 2 minutes
simple_task:
  class: "SomeActiveJob"
  every: "2.minutes"

# Runs once every day at 4:00 AM. The job will expire after 23 hours, which means the
# job will not run if 23 hours passes (server downtime) before the job is actually run
overnight_task:
  class: "SomeSidekiqWorker"
  every: "1.day"
  at: "4:00"
  expires_after: "23.hours"

# Runs once every half hour, starting on the 30 min mark
half_hour_task:
  class: "HalfHourTask"
  every: "30.minutes"
  at: "*:30"

# Runs once every week on Saturdays at 12:00 AM
weekly_task:
  class: "WeeklyJob"
  every: "1.week"
  at: "Sat 0:00"
  tz: "America/New_York"

第 4 步:将 rake 任务添加到 Heroku Scheduler 并将其设置为每 10 分钟运行一次:rake simple_scheduler

更多信息,您可以点击以下链接,

https://github.com/simplymadeapps/simple_scheduler

【问题讨论】:

    标签: ruby-on-rails ruby rubygems roo-gem


    【解决方案1】:

    这很容易实现。假设我们有一个名为 example_task 的任务,我们可以这样做:

    example_task:
      class: "ExampleJob"
      every: "1.week"
      at: "Sat 23:45"
    

    请注意,ExampleJob 必须扩展 ActiveJob::Base 并实现将保存任务逻辑的 perform 方法。

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 2021-08-14
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      相关资源
      最近更新 更多