toiler 0.1.0 → 0.1.1

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 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