Sidekiq đi kèm với lệnh sidekiqctl, có thể ngăn chặn PID được kết hợp với quy trình Sidekiq của bạn. Bạn vượt qua trong tập tin PID và số giây để chờ cho tất cả các chủ đề kết thúc.
Sample Cách sử dụng:
sidekiqctl stop #{rails_root}/tmp/pids/sidekiq_website_crawler.pid 60
Ở đây, 60 đại diện cho số giây để chờ cho đến khi tất cả các chủ đề Sidekiq được xử lý xong. Nếu 60 giây trôi qua, và tất cả không được thực hiện, chúng sẽ tự động bị giết.
Tôi cũng khuyên bạn nên sử dụng đá quý Thiên Chúa để theo dõi, dừng, khởi động và khởi động lại Sidekiq.
Khi bạn thực hiện điều đó, bạn có thể sử dụng lệnh chặn nhóm exec để dừng tất cả các chủ đề sidekiq.
Đây là tập tin Thiên Chúa của tôi, như một ví dụ:
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
Nguồn
2013-01-15 23:23:35
Perfect. Cảm ơn rất nhiều. – Undistraction
Tệp sidekiq.pid của tôi nên trông như thế nào? – Undistraction
Chỉ nên chứa PID (số) của ID tiến trình Sidekiq. Chạy ps -ef | grep "sidekiq" để có được nó. –