복붙노트

[REDIS] sidekiq 노동자가 perform_async으로 수행 된 경우 확인하는 방법 레일

REDIS

sidekiq 노동자가 perform_async으로 수행 된 경우 확인하는 방법 레일

나는 sidekiq 노동자 (sidekiq와 처음 작업)에 광범위한 백그라운드 작업을 외삽에 일하고 있어요.

나는 제대로 실행하려면이 옵션을 얻을 수있었습니다.

하지만 확인 방법 sidekiq 노동자의 진행 상황을 확인하기 위해 아니에요 - 작업자가 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

내 컨트롤러에서 호출 :

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

해결법

  1. ==============================

    1.sidekiq에 다음 확장 보석 체크 아웃 : https://github.com/utgarda/sidekiq-status/blob/master/README.md

    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"
    
  2. from https://stackoverflow.com/questions/32940007/rails-how-to-tell-if-a-sidekiq-worker-is-done-with-perform-async by cc-by-sa and MIT license