-
Notifications
You must be signed in to change notification settings - Fork 11
Scheduled Jobs
Sidekiq allows you to schedule the time when a job will be executed. You use perform_in(interval_in_seconds, *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.
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.
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). This also applies to the retry
queue (see Error-Handling). You can adjust this interval:
Sidekiq.configure_server do |config|
config.average_scheduled_poll_interval = 15
end
Sidekiq Enterprise supports periodic jobs. Other 3rd party gems also offer cron-like functionality.
Previous: Advanced Options Next: Delayed Extensions
Home | The Basics | Best Practices | Using Redis | Error Handling | Advanced Options | Problems?
This wiki is tracked by git and publicly editable. You are welcome to fix errors and typos. Any defacing or vandalism of content will result in your changes being reverted and you being blocked.