【发布时间】:2018-05-02 21:39:26
【问题描述】:
我有一个SchedulerJob:
class SchedulerJob < ActiveJob::Base
queue_as :scheduler
def perform
logger.debug("Start")
DelayedJob.set(wait: 10.seconds).perform_later
logger.debug("After Job 1")
DelayedJob.set(wait: 20.seconds).perform_later
logger.debug("After Job 2")
DelayedJob.set(wait: 30.seconds).perform_later
logger.debug("End")
end
end
还有一个DelayedJob:
class DelayedJob < ActiveJob::Base
queue_as :delayed_jobs
def perform
puts "I'm done"
end
end
如果我调用SchedulerJob.new.perform,作业只需几毫秒即可运行。如果我调用 SchedulerJob.perform_later 在 Sidekiq 中运行该作业,大约需要 90 秒才能完成,通过查看日志我可以知道每个 .perform_later 调用每个大约需要 30 秒。
为什么会这样?
【问题讨论】:
标签: ruby-on-rails sidekiq rails-activejob