2 개의 작업 (ImportCsvJob 및 ProcessCsvJob)이있는 레일 애플리케이션이 있습니다. 나는 눈에 띄게 응용 프로그램에서 힌트를 할 수 있도록하는 큐 나는 (application_helper.rb 내부)이 도우미 메서드가있는 작업이 아직 없습니다 : 그럼 난 다음에 전달 내 지수 컨트롤러에 사용레일 사이드 키 큐 크기가 작동하지 않습니다.
module ApplicationHelper
def queued_job_count
Sidekiq::Queue.new.size
end
end
처리 및 응용 프로그램에서 시각적 힌트를주는보기. 난 아직도 1 개 배경 작업 (ImportCsvJob)을했을 때
def index
@still_have_jobs = !queued_job_count.zero?
end
그러나이 작동하지만, 나는 (ProcessCsvJob)를 추가 할 때 그것은 더 이상 작동하지 않습니다.
import_csv_job.rb
require 'open-uri'
class ImportCsvJob < ActiveJob::Base
queue_as :default
def perform(csv_record)
csv_record[:object_changes] = ApplicationController.helpers.generate_hash(csv_record[:object_changes])
ObjectRecord.create(csv_record)
end
end
process_csv_job.rb
class ProcessCsvJob < ActiveJob::Base
queue_as :default
def perform(csv_path)
csv_file = open(csv_path,'rb:UTF-8')
options = {
row_sep: :auto, col_sep: ",",
user_provided_headers: [:object_id, :object_type, :timestamp, :object_changes],
remove_empty_values: true,
headers_in_file: true
}
SmarterCSV.process(csv_file, options) do |array|
ImportCsvJob.perform_later(array.first)
end
end
end
그리고 마지막으로,이 호출되는 모델 :
ProcessCsvJob.perform_later(gdrive.uploaded_file_link)
내가하려고 레일즈 콘솔에서 디버그하기 Sidekiq :: Queue.new.size를 사용하여, 그것은 여전히 0
실행을 제공합니다
을 : 그래서, 기본적으로 내가 무슨 일이 일어 났는지 확인하기 위해 웹 인터페이스를 사용하여 sidekiq에 대한 모니터링을 추가redis-server
bundle exec sidekiq
설명을 위해 실제로 sidekiq 콘솔/웹 인터페이스의 기본 대기열에서 작업이 실행되지만 Sidekiq :: Queue.new.size를 동시에 실행하면 0이 반환됩니다. – beaorn
@Bryce 예, 처리를 위해 csv 파일을 업로드했습니다. sidekiq 콘솔에서 처리 중이지만 여전히 Sidekiq :: Queue.new.size에서 0을 얻습니다. – Raven
호기심에서 벗어나 :'Sidekiq :: Queue.all'이 반환하는 것? – mudasobwa