Search code examples
ruby-on-railsdelayed-jobsidekiq

Run a Rails job at precise time (accurate to the second)


I'm making an application that needs to run a job at extremely precise intervals of time (say 30 seconds, maximum acceptable delay is +-1 second).

I'm currently doing so using an external Go application that polls an API endpoint built within my application.

Is there a way that I could run the task on a worker machine (eg a Heroku dyno) with delays less than one second?

I've investigated Sidekiq and delayed_job, but both have significant lag and therefore are unsuitable for my application.


Solution

  • Schedule the job for 60 seconds prior to when you need it run. Pass in the exact time you need the job executed, as a parameter. Then, run sleep until Time.now == exact_time_down_to_the_second?