Skip to content

谈一谈Sidekiq-Cron

Published:

安装

  gem install sidekiq
  gem install sidekiq-cron

新建job

class FirstJob < ApplicationJob
  queue_as :default
  def perform
    Article.create!(title: 'first', text: 'this is a demo')
  end
end

这里写的定时任务基于active job,其余的写法请查看sidekiq-cron

/config中新建schedule.yml

FirstJob:
  cron: "0 0 0 20 * *"
  class: FirstJob

上面代码的意思是每个月20号执行定时任务firstjob,关于更多cron的用法,请查看Cron Format

/config/initializers中新建sidekiq.rb

schedule_file = 'config/scheduler.yml'

if File.exist?(schedule_file) && Sidekiq.server?
  Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end

配置

/config/application.rb文件中添加:

config.active_job.queue_adapter = :sidekiq

启动

redis-server & sidekiq

由于redis为sidekiq提供数据存储,所以启动sidekiq前必须先启动redis,更多请查看redis