2つのジョブ(ImportCsvJobとProcessCsvJob)を持つRailsアプリケーションがあります。私は目に見えアプリでヒントことができるようにすることをキュー私は(application_helper.rb内)、このヘルパーメソッドを持っているのジョブが残っています。そして、私は、その後に渡され、私のインデックスコントローラ上でそれを使用Rails Sidekiqキューサイズが機能しない
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)
私がしようRailsコンソールでデバッグするSidekiq :: Queue.new.sizeを使用して、それはまだ0
ランニングを与える:
を:だから、基本的に私は何が起こっているか確認するためにWebインターフェイスを使用してsidekiqの監視を追加redis-server
bundle exec sidekiq
説明のため、sidekiq console/webインターフェイスのデフォルトキューでジョブが実行されていますが、同時にSidekiq :: Queue.new.sizeを実行しても0が返されていますか? – beaorn
@Bryceはい、私は処理のためにcsvファイルをアップロードしました - sidekiqコンソールで処理されていますが、Sidekiq :: Queue.new.sizeから0が得られました。 – Raven
ちょうど好奇心から: 'Sidekiq :: Queue.all'は何を返しますか? – mudasobwa