Rails sidekiq 延迟 6/10 秒的 ActiveJob 作业

Rails ActiveJob Job with sidekiq delaying 6/10 seconds

我正在使用 Rails ActiveJob 和 Sidekiq。 我有一个应该在 5 秒后执行的作业。

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

仅在 5 秒后作业仍然没有 运行。 当我在那 5 秒后查看 sidekiq 网络界面时,作业就在那里,它说:尚未排队。大约又过了 6 到 10 秒后,作业被排队并立即执行。 为什么会有这种延迟? 当我现在使用 perform 时,这个延迟不存在了。

这是我的工作:

class UserArrivalJob < ActiveJob::Base
  queue_as :default

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

阅读here。基本上我认为您的 sidekiq 轮询器每 10 秒运行一次,它会在合并时选择作业。

bcd 是对的。我将 sidekiq 配置设置为 运行 每 2 秒轮询一次。

environments/development.rb / environments/production.rb

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