Search code examples
ruby-on-railssidekiqrails-activejob

Rails ActiveJob Job with sidekiq delaying 6/10 seconds


I am using Rails ActiveJob with Sidekiq. I have a Job that is supposed to execute after 5 seconds.

UserArrivalJob.set(wait: 5.seconds).perform_later(user, planet)

Only after 5 seconds the job still hasnt ran. When i look in the sidekiq web interface after those 5 seconds the job is there and it says: Not yet enqueued. After about another 6 till 10 seconds the job gets enqeued and is immediatly executed. How come that there is this delay? When i use perform now this delay is not there.

Here is my Job:

class UserArrivalJob < ActiveJob::Base
  queue_as :default

  def perform(user, planet)
    user.planet = planet
    user.save
  end
end

Solution

  • bcd was right. I set the sidekiq configuration to run the poller every 2 seconds.

    environments/development.rb / environments/production.rb

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