আমি এই কর্মী যে চিরকাল চলমান।
class Worker
include Sidekiq::Worker
sidekiq_options queue: "infinity", retry: true
def perform(params)
# ...
self.class.perform_in(30.seconds, params)
end
end
সমস্যাটি হ'ল আমি স্টার্ট আপে শ্রমিকদের এইরকম লোড করি। config/initializers/load_workers.rb
Rails.application.config.after_initialize do
if ENV["SIDEKIQ"] == "1"
Worker.perform_async({})
end
end
সাইডিকিক শুরু করার জন্য এটি ব্যবহার করে SIDEKIQ=1 sidekiq --verbose --environment production -C config/sidekiq.yml
।
এর অর্থ হ'ল পুরানো কর্মীরা, যাঁরা বর্তমানে চলছেন, তাঁরাও তবে যাঁরা পুনরায় নির্ধারিত হচ্ছেন তারা stop
আমি এটি শুরুতে চালানোর চেষ্টা করেছি (নতুন কাজ লোড করার ঠিক আগে), কিন্তু এটি কার্যকর হয়নি।
q = []
q += Sidekiq::RetrySet.new.select { |job| job.klass.match(/Worker/) }
q += Sidekiq::Queue.new("infinity").select { |job| job.klass.match(/Worker/) }
q += Sidekiq::ScheduledSet.new.select { |job| job.klass.match(/Worker/) }
q.each(&:delete)
5-ইশ মোতায়েনের পরে পরে নির্ধারিত কাতারে ডুপ্লিকেট কর্মীদের গুচ্ছ রয়েছে। সুতরাং, একটি কাতারে প্রতিটি জিনিস সাফ করার এবং ইতিমধ্যে চলমান কাজগুলিকে পুনঃনির্ধারণ থেকে আটকাতে কোনও উপায় আছে?
আমি সাইডিকিক 3.0 ব্যবহার করছি।