Scheduled Jobs

Mike Perham edited this page Jan 19, 2017 · 31 revisions

Sidekiq allows you to schedule the time when a job will be executed. You use perform_in(interval, *args) or perform_at(timestamp, *args) rather than the standard perform_async(*args):

MyWorker.perform_in(3.hours, 'mike', 1)
MyWorker.perform_at(3.hours.from_now, 'mike', 1)

This is useful for example if you want to send the user an email 3 hours after they sign up. Jobs which are scheduled in the past are enqueued for immediate execution.

Checking for New Jobs

Sidekiq's scheduler is not meant to be second-precise. It checks for scheduled jobs approximately every 15 seconds by default. You can adjust this interval:

Sidekiq.configure_server do |config|
  config.average_scheduled_poll_interval = 15
end

Periodic Jobs

Sidekiq Enterprise supports periodic jobs. Other 3rd party gems also offer cron-like functionality.

Previous: Advanced Options Next: Delayed Extensions