我在Sidekiq上使用Rails ActiveJob。 我有一个应该在5秒后执行的Job。
UserArrivalJob.set(wait: 5.seconds).perform_later(user, planet)
仅在5秒后,作业仍然没有运行。 当我在5秒钟之后查看sidekiq网络界面时,工作就在那里,它说:尚未入队。在大约另外6到10秒之后,工作变得很快并立即执行。 怎么会有这种延迟? 当我现在使用执行时,此延迟不存在。
这是我的工作:
class UserArrivalJob < ActiveJob::Base
queue_as :default
def perform(user, planet)
user.planet = planet
user.save
end
end
答案 0 :(得分:2)
阅读here。基本上我认为你的sidekiq轮询器每隔10秒就会运行一次,它会在它汇集时选择它。
答案 1 :(得分:0)
bcd是对的。我将sidekiq配置设置为每2秒运行一次轮询。
environment / development.rb / environments / production.rb
Sidekiq.configure_server do |config|
config.average_scheduled_poll_interval = 2
end