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
我正在使用 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