Scheduled Jobs

Mike Perham edited this page Feb 21, 2018 · 34 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.

Timezones

Sidekiq's scheduling is time zone independent. Sidekiq calls .to_f on the timestamp argument, which avoids time zone confusion. See this issue for more details.

Checking for New Jobs

Sidekiq's scheduler is not meant to be second-precise. It checks for scheduled jobs approximately every 5 seconds by default (15 seconds before Sidekiq 5.1). 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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.