ruby-on-rails - 检查触发特定 Job id 的工作人员名称
问题描述
我正在开发一个 Ruby on Rails 项目。我想知道是否可以使用作业 ID 获取触发特定作业的工人姓名,以便在完成后显示适当的消息。这可能吗?还是我应该将工人姓名保存在模型中?
#I have a method that creates the job
def generate
my_model.job_id = HardWorker.perform_async()
my_model.save!
end
def check_status
if job_id && Sidekiq::Status::complete?(my_model.job_id)
# if HardWorker
# "HardWorker is done!"
# elseif AnotherWorker
# "AnotherWorker is Done!"
# end
end
end
解决方案
您可以使用以下代码通过作业 ID 获取 Worker Class:
queue = Sidekiq::Queue.new
job = queue.detect { |job| job.jid == job_id //<-- the job id you have from perfrom_async }
您的代码将是这样的:
def check_status
queue = Sidekiq::Queue.new
job = queue.detect { |job| job.jid == my_model.job_id }
if job_id && Sidekiq::Status::complete?(my_model.job_id)
puts "#{job.klass} is done" <-- The worker that triggered the job
end
end
更多关于队列在这里
推荐阅读
- c++ - 结构声明被变量隐藏时的名称解析
- reactjs - React-Select Async loadOptions - 获取失败数据
- kubernetes - 我在 kubernetes 服务 yaml 上收到错误消息“map”,预期为“string”
- db2 - 使用弱类型游标变量返回结果集
- android - 向用户显示firebase存储项目url是否可以?
- spring - Spring boot:实例化Spring java配置类
- jquery - 在汉堡菜单上单击太快会反转 fadeToggle 效果
- python-3.x - 如何在 python 中使用 Simple ITK 仅更改 Dicom 文件的数组
- javascript - JS HTTP 发布 YAML
- excel - 如何索引匹配唯一值?