Sidekiq, Sidekiq işleminizle ilişkili PID'yi durduran sidekiqctl komutuyla birlikte gelir. Tüm iş parçacıklarının bitmesini beklemek için PID dosyasına ve saniyenin # saniyesini geçirirsiniz.
Örnek Kullanım: Burada
sidekiqctl stop #{rails_root}/tmp/pids/sidekiq_website_crawler.pid 60
, 60 bütün Sidekiq ipler işlem yapılır kadar beklemek saniye sayısını temsil eder. 60 saniye geçerse ve hepsi yapılmazsa, otomatik olarak öldürülürler.
Ayrıca, Sidekiq'i izlemek, durdurmak, başlatmak ve yeniden başlatmak için Tanrı gemini kullanmanızı tavsiye ediyorum.
Bunu yaptıktan sonra, tüm sidekiq iş parçacıklarını durdurmak için bundle exec god durağını kullanabilirsiniz.
rails_env = ENV['RAILS_ENV'] || "development"
rails_root = ENV['RAILS_ROOT'] || "/home/hwc218/BuzzSumo"
God.watch do |w|
w.dir = "#{rails_root}"
w.name = "website_crawler"
w.interval = 30.seconds
w.env = {"RAILS_ENV" => rails_env}
w.interval = 30.seconds
w.start = "bundle exec sidekiq -C#{rails_root}/config/sidekiq_website_crawler.yml"
w.stop = "sidekiqctl stop #{rails_root}/tmp/pids/sidekiq_website_crawler.pid 60"
w.keepalive
# determine the state on startup
w.transition(:init, { true => :up, false => :start }) do |on|
on.condition(:process_running) do |c|
c.running = true
end
end
# determine when process has finished starting
w.transition([:start, :restart], :up) do |on|
on.condition(:process_running) do |c|
c.running = true
c.interval = 5.seconds
end
# failsafe
on.condition(:tries) do |c|
c.times = 5
c.transition = :start
c.interval = 5.seconds
end
end
# start if process is not running
w.transition(:up, :start) do |on|
on.condition(:process_running) do |c|
c.running = false
end
end
w.restart_if do |restart|
restart.condition(:restart_file_touched) do |c|
c.interval = 5.seconds
c.restart_file = File.join(rails_root, 'tmp', 'restart.txt')
end
end
end
Mükemmel:
İşte bir örnek olarak, Tanrım dosyasıdır. Çok teşekkürler. – Undistraction
Benim sidekiq.pid dosyam nasıl görünmeli? – Undistraction
Sadece Sidekiq işlem kimliğinin PID numarasını içermelidir. Ps -ef çalıştır | grep "sidekiq" bunu elde etmek için. –