gpt4 book ai didi

ruby-on-rails - Rails 如何判断 sidekiq worker 是否已完成 perform_async

转载 作者:IT王子 更新时间:2023-10-29 06:03:35 28 4
gpt4 key购买 nike

我正在努力将广泛的后台任务外推给 sidekiq 工作人员(第一次使用 sidekiq)。

我已经能够让它正常运行。

但我不确定如何检查 sidekiq worker 的进度 - 检查 worker 是否已完成 perform_async 函数的最佳方法是什么?

AutoWorker sidekiq 任务:

class AutoWorker
include Sidekiq::Worker

def perform(lead_id, cars)
logger.info "WORKER CREATED"
lead = Lead.find(lead_id)
response = ZipCodeCheck.new(cars: cars, lead: lead).execute
end
end

从我的 Controller 调用:

def update
respond_to do |format|
if @lead.update(lead_params)
cars = params[:car_array]

AutoWorker.perform_async(@lead.id, cars)
format.json { render action: 'show', status: :created, location: @lead }
else
format.html { redirect_to @lead, notice: 'Lead was successfully updated.' }
format.json { render action: 'show', status: :created, location: @lead}
end
else
format.html { render action: 'edit' }
format.json { render json: @lead.errors, status: :unprocessable_entity }
end
end
end

最佳答案

将以下扩展 gem 检查到 sidekiq:https://github.com/utgarda/sidekiq-status/blob/master/README.md

这是自述:

job_id = MyJob.perform_async(*args)
data = Sidekiq::Status::get_all job_id
data # => {status: 'complete', update_time: 1360006573, vino: 'veritas'}
Sidekiq::Status::get job_id, :vino #=> 'veritas'
Sidekiq::Status::at job_id #=> 5
Sidekiq::Status::total job_id #=> 100
Sidekiq::Status::message job_id #=> "Almost done"

关于ruby-on-rails - Rails 如何判断 sidekiq worker 是否已完成 perform_async,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940007/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com