resqued 0.7.2 → 0.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/resqued/listener.rb +12 -0
- data/lib/resqued/logging.rb +34 -3
- data/lib/resqued/version.rb +1 -1
- data/lib/resqued/worker.rb +3 -15
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d5c9debc1401bd8eba5b54ea6d6c2f9ad9787ac
|
4
|
+
data.tar.gz: 2dc545b30cdc8a84c5d1264e4ba68126d087d232
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91b94be95c8bc28778f105505e075b56f5f70587a6b51efda99551e8b3503000354d31cc6fa16b10538653c39946a3a51d5c38e336a79dfd87afe9814f18fe31
|
7
|
+
data.tar.gz: 659f8eca03013d49bcaef2641e8dcc7f56d6018b814924f01e5eef362dae9e5d4b05d971adf307739b3b810cf12fb9853e389ee8a08f4775d7dfa2cc4dcbc25f
|
data/lib/resqued/listener.rb
CHANGED
@@ -57,6 +57,7 @@ module Resqued
|
|
57
57
|
end
|
58
58
|
|
59
59
|
SIGNALS = [ :CONT, :QUIT, :INT, :TERM ]
|
60
|
+
ALL_SIGNALS = SIGNALS + [ :CHLD ]
|
60
61
|
|
61
62
|
SIGNAL_QUEUE = []
|
62
63
|
|
@@ -68,6 +69,7 @@ module Resqued
|
|
68
69
|
write_procline('starting')
|
69
70
|
|
70
71
|
config = Resqued::Config.new(@config_paths)
|
72
|
+
set_default_resque_logger
|
71
73
|
config.before_fork
|
72
74
|
report_to_master("RUNNING")
|
73
75
|
|
@@ -79,6 +81,14 @@ module Resqued
|
|
79
81
|
burn_down_workers(exit_signal || :QUIT)
|
80
82
|
end
|
81
83
|
|
84
|
+
# Private.
|
85
|
+
def set_default_resque_logger
|
86
|
+
require 'resque'
|
87
|
+
if Resque.respond_to?('logger=')
|
88
|
+
Resque.logger = Resqued::Logging.build_logger
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
82
92
|
# Private.
|
83
93
|
def run_workers_run
|
84
94
|
loop do
|
@@ -102,6 +112,7 @@ module Resqued
|
|
102
112
|
def burn_down_workers(signal)
|
103
113
|
loop do
|
104
114
|
check_for_expired_workers
|
115
|
+
write_procline('shutdown')
|
105
116
|
SIGNAL_QUEUE.clear
|
106
117
|
|
107
118
|
break if :no_child == reap_workers(Process::WNOHANG)
|
@@ -217,6 +228,7 @@ module Resqued
|
|
217
228
|
procline = "#{procline_version} listener"
|
218
229
|
procline << " #{@listener_id}" if @listener_id
|
219
230
|
procline << " [#{status}]"
|
231
|
+
procline << " [#{running_workers.size} workers]" if status == 'shutdown'
|
220
232
|
procline << " #{@config_paths.join(' ')}"
|
221
233
|
$0 = procline
|
222
234
|
end
|
data/lib/resqued/logging.rb
CHANGED
@@ -1,9 +1,39 @@
|
|
1
|
+
require 'mono_logger'
|
2
|
+
|
1
3
|
module Resqued
|
2
4
|
# Mixin for any class that wants to write messages to the log file.
|
3
5
|
module Logging
|
4
6
|
# Global logging state.
|
5
7
|
class << self
|
6
|
-
# Public: Get
|
8
|
+
# Public: Get a `Logger`.
|
9
|
+
def logger
|
10
|
+
@logger ||= build_logger
|
11
|
+
end
|
12
|
+
|
13
|
+
def build_logger
|
14
|
+
MonoLogger.new(ResquedLoggingIOWrapper.new).tap do |logger|
|
15
|
+
logger.formatter = ResquedLogFormatter.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class ResquedLogFormatter < ::Logger::Formatter
|
20
|
+
def call(severity, time, progname, msg)
|
21
|
+
"[%s#%6d] %5s %s -- %s\n" % [format_datetime(time), $$, severity, progname, msg2str(msg)]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Private: Lets our logger reopen its logfile without monologger EVEN KNOWING.
|
26
|
+
class ResquedLoggingIOWrapper
|
27
|
+
def method_missing(*args)
|
28
|
+
::Resqued::Logging.logging_io.send(*args)
|
29
|
+
end
|
30
|
+
|
31
|
+
def respond_to?(*args)
|
32
|
+
::Resqued::Logging.logging_io.respond_to?(*args)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Private: Get an IO to write log messages to.
|
7
37
|
def logging_io
|
8
38
|
@logging_io = nil if @logging_io && @logging_io.closed?
|
9
39
|
@logging_io ||=
|
@@ -51,8 +81,9 @@ module Resqued
|
|
51
81
|
end
|
52
82
|
|
53
83
|
# Private (in classes that include this module)
|
54
|
-
def log(message)
|
55
|
-
|
84
|
+
def log(level, message = nil)
|
85
|
+
level, message = :info, level if message.nil?
|
86
|
+
Resqued::Logging.logger.send(level, self.class.name) { message }
|
56
87
|
end
|
57
88
|
end
|
58
89
|
end
|
data/lib/resqued/version.rb
CHANGED
data/lib/resqued/worker.rb
CHANGED
@@ -57,25 +57,13 @@ module Resqued
|
|
57
57
|
@killed = false
|
58
58
|
if @pid = fork
|
59
59
|
# still in the listener
|
60
|
+
log "Forked worker #{@pid}"
|
60
61
|
else
|
61
62
|
# In case we get a signal before resque is ready for it.
|
62
|
-
|
63
|
+
Resqued::Listener::ALL_SIGNALS.each { |signal| trap(signal, 'DEFAULT') }
|
64
|
+
trap(:QUIT) { exit! 0 } # If we get a QUIT during boot, just spin back down.
|
63
65
|
$0 = "STARTING RESQUE FOR #{queues.join(',')}"
|
64
|
-
if Resque.respond_to?("logger")
|
65
|
-
Resque.logger.level = Logger::INFO
|
66
|
-
Resque.logger.formatter = Resque::VerboseFormatter.new
|
67
|
-
end
|
68
|
-
if ! log_to_stdout?
|
69
|
-
lf = Resqued::Logging.logging_io
|
70
|
-
if Resque.respond_to?("logger=")
|
71
|
-
Resque.logger = Resque.logger.class.new(lf)
|
72
|
-
else
|
73
|
-
$stdout.reopen(lf)
|
74
|
-
lf.close
|
75
|
-
end
|
76
|
-
end
|
77
66
|
resque_worker = Resque::Worker.new(*queues)
|
78
|
-
resque_worker.log "Starting worker #{resque_worker}"
|
79
67
|
resque_worker.term_child = true if resque_worker.respond_to?('term_child=')
|
80
68
|
Resque.redis.client.reconnect
|
81
69
|
@config.after_fork(resque_worker)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resqued
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Burke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kgio
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.9.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mono_logger
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: debugger
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|