在不暂停儿童工作者的情况下,从Sidekiq Worker调用另一个Worker并监控其进度,可以通过以下步骤实现:
下面是一个示例代码,演示了如何在Parent Worker中调用Child Worker并监控其进度:
require 'sidekiq'
require 'sidekiq-status'
class ChildWorker
include Sidekiq::Worker
include Sidekiq::Status::Worker
def perform
# Child Worker的具体任务逻辑
# 这里可以是任何你想要执行的后台任务
# 可以使用Sidekiq::Status提供的方法来更新任务进度
end
end
class ParentWorker
include Sidekiq::Worker
def perform
# 调用Child Worker并传递参数
child_worker = ChildWorker.perform_async
# 监控Child Worker的进度
while Sidekiq::Status::queued?(child_worker) || Sidekiq::Status::working?(child_worker)
progress = Sidekiq::Status::get(child_worker)
# 根据进度信息执行相应操作
# 这里可以是记录日志、发送通知等
puts "Child Worker进度:#{progress['pct_complete']}%"
sleep 1
end
# Child Worker任务完成后的操作
puts "Child Worker任务已完成"
end
end
这个示例代码使用了Sidekiq和Sidekiq-Status库来实现从Sidekiq Worker调用另一个Worker并监控其进度。你可以根据实际需求进行修改和扩展。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云