我使用Rails ActiveJob与Sidekiq。我有一个应该在5秒后执行工作。
UserArrivalJob.set(wait: 5.seconds).perform_later(user, planet)
只有5秒作业后仍然未跑。当我在那5秒后sidekiq Web界面看起来工作是存在的,它说:还没有入队。关于另外6至10秒后,工作得到enqeued并立刻执行。为什么有这种延迟?当我用现在进行这种延迟是不存在的。
这是我的工作:
class UserArrivalJob < ActiveJob::Base
queue_as :default
def perform(user, planet)
user.planet = planet
user.save
end
end
阅读here。基本上我觉得你sidekiq轮询每10秒运行一次,当它池,它挑选工作。
BCD是正确的。我设置了sidekiq配置来运行轮询每2秒。
环境/ development.rb /环境/ production.rb
Sidekiq.configure_server do |config|
config.average_scheduled_poll_interval = 2
end