Class: Sidekiq::Process

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/api.rb

Overview

Sidekiq::Process represents an active Sidekiq process talking with Redis. Each process has a set of attributes which look like this:

'hostname' => 'app-1.example.com',
'started_at' => <process start time>,
'pid' => 12345,
'tag' => 'myapp'
'concurrency' => 5,
'capsules' => {"default" => {"mode" => "weighted", "concurrency" => 5, "weights" => {"default" => 2, "low" => 1}},
'busy' => 3,
'beat' => <last heartbeat>,
'identity' => <unique string identifying the process>,
'embedded' => true,

}

Instance Method Summary collapse

Instance Method Details

#[](key) ⇒ Object



1084
1085
1086
# File 'lib/sidekiq/api.rb', line 1084

def [](key)
  @attribs[key]
end

#capsulesObject



1109
1110
1111
# File 'lib/sidekiq/api.rb', line 1109

def capsules
  self["capsules"]
end

#dump_threadsObject

Signal this process to log backtraces for all threads. Useful if you have a frozen or deadlocked process which is still sending a heartbeat. This method is asynchronous and it can take 5-10 seconds.



1145
1146
1147
# File 'lib/sidekiq/api.rb', line 1145

def dump_threads
  signal("TTIN")
end

#embedded?Boolean

Returns:

  • (Boolean)


1117
1118
1119
# File 'lib/sidekiq/api.rb', line 1117

def embedded?
  self["embedded"]
end

#identityObject



1088
1089
1090
# File 'lib/sidekiq/api.rb', line 1088

def identity
  self["identity"]
end

#labelsObject



1080
1081
1082
# File 'lib/sidekiq/api.rb', line 1080

def labels
  self["labels"].to_a
end

#queuesObject

deprecated, use capsules below



1093
1094
1095
# File 'lib/sidekiq/api.rb', line 1093

def queues
  capsules.values.flat_map { |x| x["weights"].keys }.uniq
end

#quiet!Object

Signal this process to stop processing new jobs. It will continue to execute jobs it has already fetched. This method is asynchronous and it can take 5-10 seconds for the process to quiet.



1125
1126
1127
1128
1129
# File 'lib/sidekiq/api.rb', line 1125

def quiet!
  raise "Can't quiet an embedded process" if embedded?

  signal("TSTP")
end

#stop!Object

Signal this process to shutdown. It will shutdown within its configured :timeout value, default 25 seconds. This method is asynchronous and it can take 5-10 seconds for the process to start shutting down.



1135
1136
1137
1138
1139
# File 'lib/sidekiq/api.rb', line 1135

def stop!
  raise "Can't stop an embedded process" if embedded?

  signal("TERM")
end

#stopping?Boolean

Returns true if this process is quiet or shutting down.

Returns:

  • (Boolean)

    true if this process is quiet or shutting down



1150
1151
1152
# File 'lib/sidekiq/api.rb', line 1150

def stopping?
  self["quiet"] == "true"
end

#tagObject



1076
1077
1078
# File 'lib/sidekiq/api.rb', line 1076

def tag
  self["tag"]
end

#versionObject



1113
1114
1115
# File 'lib/sidekiq/api.rb', line 1113

def version
  self["version"]
end

#weightsObject

deprecated, use capsules below



1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
# File 'lib/sidekiq/api.rb', line 1098

def weights
  hash = {}
  capsules.values.each do |cap|
    # Note: will lose data if two capsules are processing the same named queue
    cap["weights"].each_pair do |queue, weight|
      hash[queue] = weight
    end
  end
  hash
end