toiler 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1411df909332ded188599a79d720d618e46bf5bd
4
- data.tar.gz: 1e665ab6d968eaa0a85955202e5d78e8fedd99a0
3
+ metadata.gz: 0ece2dedcdd070ea808c72bf4c9dc2dfa5ed40a2
4
+ data.tar.gz: 860bb03a04d9db9f759f9be0f1ef9927086490e0
5
5
  SHA512:
6
- metadata.gz: b2fa690e79c8a88c53ef0e4df2445f57f1eb5212db96b3bb61904d035eed5bcefef868fdf37c949fe650e70875b210acfbcfe836bd7c2fdf2d1a3accf14bc96f
7
- data.tar.gz: bf9f7db7c915ed650d81597ac0c0eb74e0a65215fdad13e0c82d7a843ff9d5d76ab4d7978882b61a01362237c2b358c8cbc7643534f7c1e0a1c719997d3141fc
6
+ metadata.gz: 9547e8024e54d8ea73c305010bf89980e002c1293840b49010bd6241cab7fa1f4d2f2de373acfccf56775baead38559c86220310fde6a5917db97950ef533309
7
+ data.tar.gz: 7bb8c7bc6b85d49c90537c7267a5bad510f10d3ac22fd809b014e48f199c2911a35170f76bb1346c2e4b2b7081c0d8125e36db79f312e4bf4c959f62d5019a92
@@ -10,13 +10,16 @@ module Toiler
10
10
  finalizer :shutdown
11
11
 
12
12
  def initialize(queue, client = nil)
13
+ debug "Initializing Fetcher for queue #{queue}..."
13
14
  @queue = Queue.new queue, client
14
15
  @wait = Toiler.options[:wait] || 20
15
16
  @batch = Toiler.worker_class_registry[queue].batch?
16
17
  async.poll_messages
18
+ debug "Finished initializing Fetcher for queue #{queue}"
17
19
  end
18
20
 
19
21
  def shutdown
22
+ debug "Fetcher #{queue.name} shutting down..."
20
23
  instance_variables.each { |iv| remove_instance_variable iv }
21
24
  end
22
25
 
@@ -30,8 +33,11 @@ module Toiler
30
33
  loop do
31
34
  count = Toiler.manager.free_processors queue.name
32
35
  options[:max_number_of_messages] = (batch || count > FETCH_LIMIT) ? FETCH_LIMIT : count
36
+ debug "Fetcher #{queue.name} retreiving messages with options: #{options.inspect}..."
33
37
  msgs = queue.receive_messages options
34
- Toiler.manager.assign_messages queue.name, msgs unless msgs.empty?
38
+ debug "Fetcher #{queue.name} retreived #{msgs.count} messages..."
39
+ next if msgs.empty?
40
+ Toiler.manager.assign_messages queue.name, msgs
35
41
  Toiler.manager.wait_for_available_processors queue.name
36
42
  end
37
43
  end
@@ -16,19 +16,23 @@ module Toiler
16
16
  end
17
17
 
18
18
  def init
19
+ debug 'Initializing manager...'
19
20
  @queues = Toiler.worker_class_registry
20
21
  @client = ::Aws::SQS::Client.new
21
22
  init_workers
22
23
  init_conditions
23
24
  pool_processors
24
25
  supervise_fetchers
26
+ debug 'Finished initializing manager...'
25
27
  end
26
28
 
27
29
  def shutdown
30
+ debug 'Manager shutting down...'
28
31
  instance_variables.each { |iv| remove_instance_variable iv }
29
32
  end
30
33
 
31
34
  def stop
35
+ debug 'Manager stopping...'
32
36
  terminate_fetchers
33
37
  terminate_processors
34
38
  end
@@ -88,6 +92,7 @@ module Toiler
88
92
  end
89
93
 
90
94
  def assign_messages(queue, messages)
95
+ debug "Manager assigning #{messages.count} for queue #{queue}"
91
96
  processor_pool = Toiler.processor_pool(queue)
92
97
  if batch? queue
93
98
  processor_pool.async.process(queue, messages)
@@ -96,6 +101,7 @@ module Toiler
96
101
  processor_pool.async.process(queue, m)
97
102
  end
98
103
  end
104
+ debug "Manager finished assigning #{messages.count} for queue #{queue}"
99
105
  end
100
106
 
101
107
  def wait_for_available_processors(queue)
@@ -11,21 +11,21 @@ module Toiler
11
11
  finalizer :shutdown
12
12
 
13
13
  def initialize(queue)
14
+ debug "Initializing Processor for queue #{queue}"
14
15
  @queue = queue
15
- async.init
16
- end
17
-
18
- def init
19
16
  @scheduler = Scheduler.supervise.actors.first
20
17
  processor_finished
18
+ debug "Finished initializing Processor for queue #{queue}"
21
19
  end
22
20
 
23
21
  def shutdown
22
+ debug "Processor for queue #{queue} shutting down..."
24
23
  scheduler.terminate if scheduler && scheduler.alive?
25
24
  instance_variables.each { |iv| remove_instance_variable iv }
26
25
  end
27
26
 
28
27
  def process(queue, sqs_msg)
28
+ debug "Processor #{queue} begins processing..."
29
29
  exclusive do
30
30
  worker = Toiler.worker_registry[queue]
31
31
  timer = auto_visibility_timeout(queue, sqs_msg, worker.class)
@@ -36,11 +36,11 @@ module Toiler
36
36
  sqs_msg.delete if worker.class.auto_delete?
37
37
  ensure
38
38
  timer.cancel if timer
39
- ::ActiveRecord::Base.clear_active_connections!
39
+ ::ActiveRecord::Base.clear_active_connections! if defined? ActiveRecord
40
40
  end
41
41
  end
42
- ensure
43
42
  processor_finished
43
+ debug "Processor #{queue} finishes processing..."
44
44
  end
45
45
 
46
46
  def processor_finished
@@ -52,11 +52,12 @@ module Toiler
52
52
  def auto_visibility_timeout(queue, sqs_msg, worker_class)
53
53
  return unless worker_class.auto_visibility_timeout?
54
54
  queue_visibility_timeout = Toiler.fetcher(queue).queue.visibility_timeout
55
- block = lambda do |msg, visibility_timeout|
55
+ block = lambda do |msg, visibility_timeout, q|
56
+ debug "Processor #{q} updating visibility_timeout..."
56
57
  msg.visibility_timeout = visibility_timeout
57
58
  end
58
59
 
59
- scheduler.custom_every(queue_visibility_timeout - 5, sqs_msg, queue_visibility_timeout, block)
60
+ scheduler.custom_every(queue_visibility_timeout - 5, sqs_msg, queue_visibility_timeout, queue, block)
60
61
  end
61
62
 
62
63
  def get_body(worker_class, sqs_msg)
@@ -1,3 +1,3 @@
1
1
  module Toiler
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Schepens