Усе і навіть більше є у wiki
Gemfile
1 2 3 4 5 |
gem 'sidekiq' gem 'sidekiq-cron' gem 'sidekiq-status' gem 'sidekiq-failures' gem 'sidekiq-scheduler' |
Створюємо файл config/schedule.yml із описом черги, наприклад
1 2 3 4 5 |
export_to_segment: cron: "*/1 * * * *" class: "ExportToSegment" queue: export_to_segment |
Описуємо чергув config/sidekiq.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
--- :verbose: false :concurrency: 10 # Set timeout to 8 on Heroku, longer if you manage your own systems. :timeout: 8 # Sidekiq will run this file through ERB when reading it so you can # even put in dynamic logic, like a host-specific queue. # http://www.mikeperham.com/2013/11/13/advanced-sidekiq-host-specific-queues/ :queues: - default - paperclip - export_to_segmant # you can override concurrency based on environment production: :concurrency: 25 staging: :concurrency: 15 |
У воркері задаємо чергу, наприклад
1 2 3 4 5 6 7 8 9 10 11 |
class ExportToSegment include Sidekiq::Worker include Sidekiq::Status::Worker sidekiq_options queue: :mail sidekiq_options retry: false def perform ... end end |
Редагуємо config/initilalizers/sidekiq.rb до такого вигляду
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
require 'sidekiq' require 'sidekiq-status' schedule_file = 'config/schedule.yml' if File.exists?(schedule_file) && Sidekiq.server? Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file) end Sidekiq.configure_client do |config| # accepts :expiration (optional) Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes end Sidekiq.configure_server do |config| # accepts :expiration (optional) Sidekiq::Status.configure_server_middleware config, expiration: 30.minutes # accepts :expiration (optional) Sidekiq::Status.configure_client_middleware config, expiration: 30.minutes end |
Якщо sidekiq запускається через Procfile (наприклад коли використовується Heroku) не забудьте передати назву черги(якщо задані інші), наприклад
1 2 3 4 |
web: bundle exec thin start -p $PORT -C config/thin.yml worker: bundle exec sidekiq -q default -q paperclip -q export_to_segment log: tail -f log/development.log |