1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Better usage text for sidekiqctl

This commit is contained in:
Mike Perham 2014-12-26 09:20:15 -08:00
parent f69d159ea0
commit 136af0b5e2
3 changed files with 18 additions and 15 deletions

View file

@ -3,6 +3,7 @@ HEAD
- Log Sidekiq Pro's Batch ID if available [#2076]
- Refactor Processor Redis usage to avoid redis/redis-rb#490 [#]
- Add better usage text for `sidekiqctl`.
3.3.0

View file

@ -3,23 +3,29 @@
require 'fileutils'
class Sidekiqctl
DEFAULT_TIMEOUT = 10
DEFAULT_KILL_TIMEOUT = 10
attr_reader :stage, :pidfile, :timeout
attr_reader :stage, :pidfile, :kill_timeout
def self.print_usage
puts "#{File.basename($0)} - stop a Sidekiq process from the command line."
puts
puts "Usage: #{File.basename($0)} <command> <pidfile> <timeout>"
puts " where <command> is either 'quiet', 'stop' or 'shutdown'"
puts "Usage: #{File.basename($0)} <command> <pidfile> <kill_timeout>"
puts " where <command> is either 'quiet' or 'stop'"
puts " <pidfile> is path to a pidfile"
puts " <timeout> is number of seconds to wait till Sidekiq exits (default: #{Sidekiqctl::DEFAULT_TIMEOUT})"
puts " <kill_timeout> is number of seconds to wait until Sidekiq exits"
puts " (default: #{Sidekiqctl::DEFAULT_KILL_TIMEOUT}), after which Sidekiq will be KILL'd"
puts
puts "Be sure to set the kill_timeout LONGER than Sidekiq's -t timeout. If you want"
puts "to wait 60 seconds for jobs to finish, use `sidekiq -t 60` and `sidekiqctl stop"
puts " path_to_pidfile 61`"
puts
end
def initialize(stage, pidfile, timeout)
@stage = stage
@pidfile = pidfile
@timeout = timeout
@kill_timeout = timeout
done('No pidfile given', :error) if !pidfile
done("Pidfile #{pidfile} does not exist", :warn) if !File.exist?(pidfile)
@ -30,7 +36,7 @@ class Sidekiqctl
begin
send(stage)
rescue NoMethodError
done 'Invalid control command', :error
done "Invalid command: #{stage}", :error
end
end
@ -59,7 +65,7 @@ class Sidekiqctl
def stop
`kill -TERM #{pid}`
timeout.times do
kill_timeout.times do
begin
Process.getpgid(pid)
rescue Errno::ESRCH
@ -72,11 +78,7 @@ class Sidekiqctl
FileUtils.rm_f pidfile
done 'Sidekiq shut down forcefully.'
end
def shutdown
quiet
stop
end
alias_method :shutdown, :stop
end
if ARGV.length < 2
@ -85,7 +87,7 @@ else
stage = ARGV[0]
pidfile = ARGV[1]
timeout = ARGV[2].to_i
timeout = Sidekiqctl::DEFAULT_TIMEOUT if timeout == 0
timeout = Sidekiqctl::DEFAULT_KILL_TIMEOUT if timeout == 0
Sidekiqctl.new(stage, pidfile, timeout)
end

View file

@ -48,7 +48,7 @@ module Sidekiq
@done = true
logger.info { "Shutting down #{@ready.size} quiet workers" }
logger.info { "Terminating #{@ready.size} quiet workers" }
@ready.each { |x| x.terminate if x.alive? }
@ready.clear