creeper 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
data/lib/creeper.rb
CHANGED
@@ -27,8 +27,8 @@ module Creeper
|
|
27
27
|
## default configuration ##
|
28
28
|
|
29
29
|
@beanstalk_url = ENV['BEANSTALK_URL'] || 'beanstalk://127.0.0.1/'
|
30
|
-
@
|
31
|
-
@
|
30
|
+
@err_logger = ::Logger.new($stderr)
|
31
|
+
@out_logger = ::Logger.new($stdout)
|
32
32
|
@patience_soft = 60
|
33
33
|
@patience_hard = 30
|
34
34
|
@pool_size = 2
|
@@ -101,7 +101,7 @@ module Creeper
|
|
101
101
|
def work(jobs = nil, size = nil)
|
102
102
|
require 'creeper/worker'
|
103
103
|
|
104
|
-
Creeper.pool_size = size || Creeper.
|
104
|
+
Creeper.pool_size = size || Creeper.pool_
|
105
105
|
|
106
106
|
Creeper::Worker.work(jobs, Creeper.pool_size)
|
107
107
|
end
|
@@ -213,8 +213,8 @@ module Creeper
|
|
213
213
|
## queue ##
|
214
214
|
|
215
215
|
def enqueue(job, data = {}, options = {})
|
216
|
-
#
|
217
|
-
|
216
|
+
# OutLogger.debug "#{Thread.current[:actor].inspect} Enqueueing #{job.inspect}, #{data.inspect}"#\n#{Celluloid::Actor.all.pretty_inspect}"
|
217
|
+
OutLogger.debug "[#{Thread.current[:actor] ? Thread.current[:actor].subject.number : nil}] Enqueueing #{job.inspect}, #{data.inspect}" if $DEBUG
|
218
218
|
enqueue!(job, data, options)
|
219
219
|
rescue Beanstalk::NotConnected => e
|
220
220
|
disconnected(self, :enqueue, job, data, options)
|
@@ -236,8 +236,7 @@ module Creeper
|
|
236
236
|
def error_work(worker, data, name, job)
|
237
237
|
(worker.stopped_at = Time.now).tap do |stopped_at|
|
238
238
|
error_message = "#{worker.prefix} Error after #{worker.time_in_milliseconds}ms #{worker.dump(job, name, data)}"
|
239
|
-
|
240
|
-
Logger.error error_message
|
239
|
+
OutLogger.error error_message
|
241
240
|
end
|
242
241
|
end
|
243
242
|
|
@@ -264,19 +263,19 @@ module Creeper
|
|
264
263
|
|
265
264
|
def start_work(worker, data, name, job)
|
266
265
|
(worker.started_at = Time.now).tap do |started_at|
|
267
|
-
|
266
|
+
OutLogger.info "#{worker.prefix} Working #{worker.dump(job, name, data)}"
|
268
267
|
end
|
269
268
|
end
|
270
269
|
|
271
270
|
def stop_work(worker, data, name, job)
|
272
271
|
(worker.stopped_at = Time.now).tap do |stopped_at|
|
273
|
-
|
272
|
+
OutLogger.info "#{worker.prefix} Finished in #{worker.time_in_milliseconds}ms #{worker.dump(job, name, data)}"
|
274
273
|
end
|
275
274
|
end
|
276
275
|
|
277
276
|
def unregister_worker(worker, reason = nil)
|
278
277
|
reason ||= 'Stopping'
|
279
|
-
|
278
|
+
OutLogger.info "#{worker.prefix} #{reason}"
|
280
279
|
lock.synchronize do
|
281
280
|
WORKERS.delete(worker.number)
|
282
281
|
end
|
@@ -296,7 +295,7 @@ module Creeper
|
|
296
295
|
Thread.current[:beanstalk_connection_retries] ||= 0
|
297
296
|
|
298
297
|
if Thread.current[:beanstalk_connection_retries] >= retry_count
|
299
|
-
|
298
|
+
OutLogger.error "Unable to connect to beanstalk after #{Thread.current[:beanstalk_connection_retries]} attempts"
|
300
299
|
Thread.current[:beanstalk_connection_retries] = 0
|
301
300
|
return false
|
302
301
|
end
|
@@ -313,7 +312,7 @@ module Creeper
|
|
313
312
|
def soft_shutdown_workers(timeout)
|
314
313
|
Timeout.timeout(timeout) do
|
315
314
|
actors = Celluloid::Actor.all
|
316
|
-
|
315
|
+
OutLogger.info "Gracefully stopping #{actors.size} actors..." if actors.size > 0
|
317
316
|
|
318
317
|
# Attempt to shut down the supervision tree, if available
|
319
318
|
Celluloid::Supervisor.root.terminate if Celluloid::Supervisor.root
|
@@ -336,14 +335,14 @@ module Creeper
|
|
336
335
|
end
|
337
336
|
end
|
338
337
|
|
339
|
-
|
338
|
+
OutLogger.info "Graceful stop completed cleanly"
|
340
339
|
end
|
341
340
|
end
|
342
341
|
|
343
342
|
def hard_shutdown_workers(timeout)
|
344
343
|
Timeout.timeout(timeout) do
|
345
344
|
actors = Celluloid::Actor.all
|
346
|
-
|
345
|
+
OutLogger.info "Terminating #{actors.size} actors..." if actors.size > 0
|
347
346
|
|
348
347
|
# Attempt to shut down the supervision tree, if available
|
349
348
|
Celluloid::Supervisor.root.terminate if Celluloid::Supervisor.root
|
@@ -363,13 +362,13 @@ module Creeper
|
|
363
362
|
end
|
364
363
|
end
|
365
364
|
|
366
|
-
|
365
|
+
OutLogger.info "Termination completed cleanly"
|
367
366
|
end
|
368
367
|
end
|
369
368
|
|
370
369
|
def kill_shutdown_workers
|
371
370
|
actors = Celluloid::Actor.all
|
372
|
-
|
371
|
+
OutLogger.info "Killing #{actors.size} actors..." if actors.size > 0
|
373
372
|
|
374
373
|
# Attempt to shut down the supervision tree, if available
|
375
374
|
Celluloid::Supervisor.root.kill if Celluloid::Supervisor.root
|
@@ -383,7 +382,7 @@ module Creeper
|
|
383
382
|
end
|
384
383
|
end
|
385
384
|
|
386
|
-
|
385
|
+
OutLogger.info "Killing completed cleanly"
|
387
386
|
end
|
388
387
|
|
389
388
|
def pool_managers
|
@@ -407,5 +406,5 @@ module Creeper
|
|
407
406
|
end
|
408
407
|
|
409
408
|
require 'creeper/creep'
|
410
|
-
require 'creeper/
|
411
|
-
require 'creeper/
|
409
|
+
require 'creeper/err_logger'
|
410
|
+
require 'creeper/out_logger'
|
@@ -1,25 +1,25 @@
|
|
1
1
|
module Creeper
|
2
|
-
module
|
2
|
+
module ErrLogger
|
3
3
|
module_function
|
4
4
|
|
5
5
|
# Send a debug message
|
6
6
|
def debug(string)
|
7
|
-
Creeper.
|
7
|
+
Creeper.err_logger.debug(string) if Creeper.err_logger
|
8
8
|
end
|
9
9
|
|
10
10
|
# Send a info message
|
11
11
|
def info(string)
|
12
|
-
Creeper.
|
12
|
+
Creeper.err_logger.info(string) if Creeper.err_logger
|
13
13
|
end
|
14
14
|
|
15
15
|
# Send a warning message
|
16
16
|
def warn(string)
|
17
|
-
Creeper.
|
17
|
+
Creeper.err_logger.warn(string) if Creeper.err_logger
|
18
18
|
end
|
19
19
|
|
20
20
|
# Send an error message
|
21
21
|
def error(string)
|
22
|
-
Creeper.
|
22
|
+
Creeper.err_logger.error(string) if Creeper.err_logger
|
23
23
|
end
|
24
24
|
|
25
25
|
# Handle a crash
|
@@ -1,25 +1,26 @@
|
|
1
1
|
module Creeper
|
2
|
-
module
|
3
|
-
|
2
|
+
module OutLogger
|
3
|
+
|
4
|
+
extend self
|
4
5
|
|
5
6
|
# Send a debug message
|
6
7
|
def debug(string)
|
7
|
-
Creeper.
|
8
|
+
Creeper.out_logger.debug(string) if Creeper.out_logger
|
8
9
|
end
|
9
10
|
|
10
11
|
# Send a info message
|
11
12
|
def info(string)
|
12
|
-
Creeper.
|
13
|
+
Creeper.out_logger.info(string) if Creeper.out_logger
|
13
14
|
end
|
14
15
|
|
15
16
|
# Send a warning message
|
16
17
|
def warn(string)
|
17
|
-
Creeper.
|
18
|
+
Creeper.out_logger.warn(string) if Creeper.out_logger
|
18
19
|
end
|
19
20
|
|
20
21
|
# Send an error message
|
21
22
|
def error(string)
|
22
|
-
Creeper.
|
23
|
+
Creeper.out_logger.error(string) if Creeper.out_logger
|
23
24
|
end
|
24
25
|
|
25
26
|
# Handle a crash
|
@@ -33,5 +34,6 @@ module Creeper
|
|
33
34
|
str = "#{exception.class}: #{exception.to_s}\n"
|
34
35
|
str << exception.backtrace.join("\n")
|
35
36
|
end
|
37
|
+
|
36
38
|
end
|
37
39
|
end
|
data/lib/creeper/version.rb
CHANGED
data/lib/creeper/worker.rb
CHANGED
@@ -97,7 +97,7 @@ module Creeper
|
|
97
97
|
@jobs = self.class.jobs_for(jobs)
|
98
98
|
|
99
99
|
Creeper.register_worker(self)
|
100
|
-
|
100
|
+
OutLogger.info "#{prefix} Working #{self.jobs.size} jobs: [ #{self.jobs.join(' ')} ]"
|
101
101
|
end
|
102
102
|
|
103
103
|
def dump(job, name = nil, data = nil)
|
@@ -175,7 +175,7 @@ module Creeper
|
|
175
175
|
begin
|
176
176
|
job = reserve Creeper.reserve_timeout
|
177
177
|
rescue Beanstalk::TimedOut
|
178
|
-
|
178
|
+
OutLogger.debug "#{prefix} Back to the unemployment line" if $DEBUG
|
179
179
|
return false
|
180
180
|
end
|
181
181
|
|
@@ -183,7 +183,7 @@ module Creeper
|
|
183
183
|
|
184
184
|
Thread.current[:creeper_working] = true
|
185
185
|
|
186
|
-
|
186
|
+
OutLogger.debug "#{prefix} Got #{job.inspect}" if $DEBUG
|
187
187
|
|
188
188
|
work! job # asynchronously go to work
|
189
189
|
rescue SystemExit => e
|
@@ -205,7 +205,7 @@ module Creeper
|
|
205
205
|
finalizer.call
|
206
206
|
end
|
207
207
|
rescue => e
|
208
|
-
|
208
|
+
OutLogger.crash "#{prefix} finalizer error", e
|
209
209
|
end
|
210
210
|
end
|
211
211
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: creeper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -129,9 +129,9 @@ files:
|
|
129
129
|
- lib/creeper.rb
|
130
130
|
- lib/creeper/celluloid_ext.rb
|
131
131
|
- lib/creeper/creep.rb
|
132
|
-
- lib/creeper/
|
132
|
+
- lib/creeper/err_logger.rb
|
133
133
|
- lib/creeper/launcher.rb
|
134
|
-
- lib/creeper/
|
134
|
+
- lib/creeper/out_logger.rb
|
135
135
|
- lib/creeper/version.rb
|
136
136
|
- lib/creeper/worker.rb
|
137
137
|
- spec/lib/creeper/session_spec.rb
|