【发布时间】:2023-05-10 23:43:02
【问题描述】:
我正在使用 sidekiq 处理后台作业。
class MainWorker
def perform(from_date, to_date)
Rails.logger.info "In MainWorker, job id #{jid}"
SampleWorker.new.perform(from_date, to_date)
end
end
class SampleWorker
def perform(from_date, to_date)
Rails.logger.info "In SampleWorker, job id #{jid}"
end
end
我从 MainWorker 调用 SampleWorker。打印时,我在 MainWorker 中获得 Sidekiq 作业 ID。但是当我打印时,我在 SampleWorker 中看到 Job id 为 nil。
如何在不作为参数传递的情况下从 MainWorker 获取 SampleWorker 中相同的作业 ID?
是否有任何可用的会话选项?如果是,我该怎么做?
【问题讨论】:
-
您的
MainWorker工作如何排队?在我看来,jid在Sampleworker而不是在Mainworker中为零的唯一方法是它们的排队方式不同。注意:aync=async的拼写错误? -
@MatthieuLibeer 是的。这是正确的。 jid 在 Sampleworker 中为零,在 Mainworker 中不为零。有没有办法通过在执行中作为参数传递来将 jid 从 MainWorker 获取到 SampleWorker。我还更新了一个从 aync 到 async 的错字
-
jid 在 perform 方法中不应该为 nil。您的设置有问题。您使用的是 Sidekiq::Testing.inline 还是其他一些不寻常的设置?
-
@MikePerham 我在 MainWorker 中调用 SampleWorker.new.perform(from_date, to_date)。我没有使用 Sidekiq::Testing.inline。如果我必须在 MainWorker 中调用 Sampleworker,我是否必须使用 Sidekiq::Testing.inline?
标签: ruby-on-rails jobs sidekiq