skyrunner 0.1.1 → 0.1.2

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: 4a2ced9a38b36395ef00e5eacfb9d6ff57711f06
4
- data.tar.gz: 95ec876e3a8e95eca0498b451ae677ef390a1e11
3
+ metadata.gz: 49176f855293135111d70129a79f8f6099d775f6
4
+ data.tar.gz: fe7cb68a221e708c668e49f950161f4db9d67542
5
5
  SHA512:
6
- metadata.gz: d5ad890cdaa3a625f0056587a18f56601c2ac5d9a9039a5151805ee109ad2f4c19b79dadc9637790bb1eaee70f681ad20c3cc8ce9f6208bcb0c8053479b571f0
7
- data.tar.gz: d05d068716f2c988700810eed2083bc18f940135ec5fcada0e5c275723b13f53dff9970e7eba791c096160635df529be8249c1b14d8f3c7b621a17c902d0a16b
6
+ metadata.gz: ff7a55a80f9a5710ddddcec9b0df187d098557667e49db60c6a90386b7e006b9b08437cb02dd4791396169acc378d44dcf0bc633c582b11f6b62f751fd779538
7
+ data.tar.gz: 1df498dd88128acb06800004a76208292881c10e372d180cb2d7f38ef28cb7d8860821aa1f30ee11eaf28971bf2f35159fc7471b0734512d15eaf44cda0099b0
data/bin/skyrunner CHANGED
@@ -32,14 +32,12 @@ opts = Trollop::options do
32
32
 
33
33
  opt :dynamo_db_table_name, "DynamoDB table to use for job state.", default: "skyrunner_jobs", type: :string
34
34
  opt :sqs_queue_name, "SQS queue use for tasks.", default: "skyrunner_tasks", type: :string
35
- opt :namespace, "Namespace of jobs to consume.", default: "default", type: :string
36
35
  opt :batch_size, "Number of tasks to consume per batch.", default: 10
37
36
  opt :num_threads, "Number of consumer threads.", default: 10
38
37
  end
39
38
 
40
39
  SkyRunner.dynamo_db_table_name = opts[:dynamo_db_table_name]
41
40
  SkyRunner.sqs_queue_name = opts[:sqs_queue_name]
42
- SkyRunner.job_namespace = opts[:namespace]
43
41
  SkyRunner.consumer_batch_size = opts[:batch_size].to_i
44
42
  SkyRunner.num_threads = opts[:num_threads].to_i
45
43
 
@@ -59,6 +57,6 @@ when "consume"
59
57
  when "test"
60
58
  $: << "."
61
59
  require "#{File.dirname(__FILE__)}/../jobs/example_job"
62
- ExampleJobModule::ExampleJob.new.execute!(number_of_tasks: 500)
60
+ ExampleJobModule::ExampleJob.new.execute!(number_of_tasks: 100)
63
61
  SkyRunner.consume!
64
62
  end
@@ -5,9 +5,6 @@ SkyRunner.setup do |config|
5
5
  config.dynamo_db_table_name = "skyrunner_jobs_#{Rails.env}"
6
6
  config.sqs_queue_name = "skyrunner_tasks_#{Rails.env}"
7
7
 
8
- # Customzie this to change the namespace of jobs enqueued and consumed by this application.
9
- config.job_namespace = Rails.application.class.parent_name.underscore
10
-
11
8
  # Set the number of tasks for a consumer to pull and run from SQS at a time. (Max 10, default 10)
12
9
  #
13
10
  # config.consumer_batch_size = 10
data/lib/skyrunner/job.rb CHANGED
@@ -34,7 +34,7 @@ module SkyRunner::Job
34
34
  table = SkyRunner.dynamo_db_table
35
35
  queue = SkyRunner.sqs_queue
36
36
 
37
- record = table.items.put(job_id: job_id, namespace: SkyRunner.job_namespace, class: self.class.name, args: args.to_json, total_tasks: 1, completed_tasks: 0, done: 0, failed: 0)
37
+ record = table.items.put(job_id: job_id, class: self.class.name, args: args.to_json, total_tasks: 1, completed_tasks: 0, done: 0, failed: 0)
38
38
 
39
39
  pending_args = []
40
40
 
@@ -1,3 +1,3 @@
1
1
  module Skyrunner
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/lib/skyrunner.rb CHANGED
@@ -74,7 +74,7 @@ module SkyRunner
74
74
  1.upto(SkyRunner::num_threads) do
75
75
  threads << Thread.new do
76
76
  loop do
77
- break if SkyRunner::stop_consuming? && local_queue.size == 0
77
+ break if SkyRunner::stop_consuming? && local_queue.empty?
78
78
 
79
79
  sleep 1 unless local_queue.size > 0
80
80
 
@@ -116,24 +116,24 @@ module SkyRunner
116
116
 
117
117
  received_messages = []
118
118
 
119
- queue.receive_messages(limit: [1, [SkyRunner.consumer_batch_size, SQS_MAX_BATCH_SIZE].min].max, wait_time_seconds: 5) do |message|
119
+ batch_size = [1, [SkyRunner.consumer_batch_size, SQS_MAX_BATCH_SIZE].min].max
120
+
121
+ queue.receive_messages(limit: batch_size, wait_time_seconds: 5) do |message|
120
122
  received_messages << [message, JSON.parse(message.body)]
121
123
  end
122
124
 
123
125
  next unless received_messages.size > 0
124
126
 
125
127
  table.batch_get(:all, received_messages.map { |m| m[1]["job_id"] }.uniq, consistent_read: true) do |record|
126
- received_messages.select { |m| m[1]["job_id"] == record["job_id"] }.each_with_index do |received_message|
127
- message = received_message[1]
128
- job_id = message["job_id"]
129
-
130
- if record["namespace"] == SkyRunner.job_namespace && record["failed"] == 0 && error_queue.size == 0
131
- start_time = Time.now
128
+ received_messages.select { |m| m[1]["job_id"] == record["job_id"] }.each do |received_message|
129
+ message, message_data = received_message
130
+ job_id = message_data["job_id"]
132
131
 
132
+ if record["failed"] == 0 && error_queue.empty?
133
133
  begin
134
134
  klass = Kernel.const_get(record["class"])
135
- task_args = message["task_args"]
136
- local_queue.push([klass, job_id, task_args, received_message[0]])
135
+ task_args = message_data["task_args"]
136
+ local_queue.push([klass, job_id, task_args, message])
137
137
  rescue NameError => e
138
138
  log :error, "Task Failed: No such class #{record["class"]} #{e.message}"
139
139
  yield e if block_given?
@@ -143,7 +143,7 @@ module SkyRunner
143
143
  end
144
144
  end
145
145
 
146
- threads.each { |t| t.join }
146
+ threads.each(&:join)
147
147
 
148
148
  true
149
149
  end
@@ -184,9 +184,6 @@ module SkyRunner
184
184
  mattr_accessor :sqs_message_retention_period
185
185
  @@sqs_message_retention_period = 345600
186
186
 
187
- mattr_accessor :job_namespace
188
- @@job_namespace = "default"
189
-
190
187
  mattr_accessor :consumer_batch_size
191
188
  @@consumer_batch_size = 10
192
189
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skyrunner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Fodor