fanforce-workers 0.7.1 → 0.7.2

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDA4NWQzYTRhN2U4NzUwZjM3MzZjYzFhY2Y5YmVhOTczMWMwMjQ3Zg==
4
+ MzE2YjI1YjljN2E4ZGQ0ZDA1YTY4ODlmZjZkNjMzZDM0MzQ3ODE2Mw==
5
5
  data.tar.gz: !binary |-
6
- ZTU0YTNmZTk5NjQ3YWJkZGI0ZmVjZDRmOTc0NWI2ZTEzZjM1MDkwOA==
6
+ ZjFmZTc3ZmIyMjM5YjM2MWIxNjg0ZjIyMTliNGQzNjg1YzdmMzI5ZQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MTViZjRmNjkzNDU1OTkzODIyY2M3Mjk5ZjAzMWRjNWM3OGY5ZDUyNWQ2N2My
10
- ODhlYzQyNDdmY2U0YTUwNjY4NmM3MTI3ZWJlOTU4MTRjZmU0ZmZjNmUyNjll
11
- NWQ0MzdiZDVmNTY5ZmIzOGIzNzRiYmRjMDQ5Njk3MzBjMWEzODU=
9
+ NGE1MjA5YTg3Yjg2N2E4MTk2YTE5ZTgzM2JkMWMyMGJlYmIxMTc1MzA4ODI5
10
+ NjM5NmRlMWZhZTI1ZWI5M2QyNjU0ZWE4MTExNjg3MTBhMThhN2IzNGUxZDgy
11
+ NDMzYTM3MjJkM2NiNzhhM2U2YjM3NGUwNTNkZDYyMjVlYzMxZTE=
12
12
  data.tar.gz: !binary |-
13
- YjU5MmFhYTkwZWU0MWE1M2EzMTQxNjRlMjVjZjhkNTNiYjI2NmM2MWIyNjE5
14
- OWFmZTZjY2JiYWMwY2I1YjMyMzk1NmRhMGJkNjBiMTM1NzJmYWFlNWQwNjJk
15
- MmI3ZGY0ZDU4NzJjZDI4MmRjY2RmNjY1MzllMDY4MGFlNWY1NTk=
13
+ ZmQxNGQyYmZmOTJiODM5ZjVhMzBkZDJlNDczZDQzNjEyOWZiYWI4OTk4ZTYz
14
+ ODM3NTk2ZjJlYmY5MWFjYmM1M2EzOGI5YWU0YTljNDhhODRhM2IzNGI1M2Jh
15
+ YjI2YTVlMzhiMmZkZWEwN2JmYjM2NDcwY2RmY2NkODc1NmIxMzk=
@@ -1,5 +1,5 @@
1
1
  class Fanforce
2
2
  class Workers
3
- VERSION = '0.7.1'
3
+ VERSION = '0.7.2'
4
4
  end
5
5
  end
@@ -14,9 +14,10 @@ class Fanforce::Workers
14
14
  @iron_cache ||= IronCache::Client.new(:token => @opts[:token] || ENV['IRON_TOKEN'], :project_id => @opts[:project_id] || ENV['IRON_PROJECT_ID'])
15
15
  end
16
16
 
17
- def enqueue(queue_id, params, retries=0)
17
+ def enqueue(queue_id, params, options={})
18
+ retries = (options[:retries].present?) ? options.delete(:retries) : 0
18
19
  raise 'Params being sent to the queue must be a Hash' if !params.is_a?(Hash)
19
- iron_mq.queue(queue_id).post({params: params, retries: retries}.to_json)
20
+ iron_mq.queue(queue_id).post({params: params, retries: retries}.to_json, options)
20
21
  end
21
22
 
22
23
  def add_error(queue_id, error)
@@ -35,8 +36,8 @@ class Fanforce::Workers
35
36
  }.to_json)
36
37
  end
37
38
 
38
- def delete_error(queue_id, msg_id, details_id)
39
- iron_mq.queue("#{queue_id}-ERRORS").delete(msg_id)
39
+ def delete_error(queue_id, job_id, details_id)
40
+ iron_mq.queue("#{queue_id}-ERRORS").delete(job_id)
40
41
  iron_cache.cache("#{queue_id}-ERRORS").delete(details_id)
41
42
  end
42
43
 
@@ -45,12 +46,12 @@ class Fanforce::Workers
45
46
  MultiJson.load(cache.value, :symbolize_keys => true)
46
47
  end
47
48
 
48
- def retry_error(queue_id, msg_id, details_id)
49
+ def retry_error(queue_id, job_id, details_id)
49
50
  cache = iron_cache.cache("#{queue_id}-ERRORS").get(details_id)
50
51
  cache_data = MultiJson.load(cache.value, :symbolize_keys => true)
51
- enqueue(queue_id, cache_data[:params], cache_data[:retries] + 1)
52
+ enqueue(queue_id, cache_data[:params], :retries => cache_data[:retries] + 1)
52
53
 
53
- cache.delete and iron_mq.queue("#{queue_id}-ERRORS").delete(msg_id)
54
+ cache.delete and iron_mq.queue("#{queue_id}-ERRORS").delete(job_id)
54
55
  end
55
56
 
56
57
  def truncate(text, length=130, truncate_string="...")
@@ -63,8 +64,8 @@ class Fanforce::Workers
63
64
 
64
65
  ##########################################################################################
65
66
 
66
- def self.enqueue(queue_id, payload)
67
- self.new.enqueue(queue_id, payload)
67
+ def self.enqueue(queue_id, params, options={})
68
+ self.new.enqueue(queue_id, params, options)
68
69
  end
69
70
 
70
71
  def self.add_error(queue_id, error)
@@ -73,6 +74,30 @@ class Fanforce::Workers
73
74
 
74
75
  ##########################################################################################
75
76
 
77
+ def self.current_queue_id=(queue_id)
78
+ @current_queue_id = queue_id
79
+ end
80
+
81
+ def self.current_queue_id
82
+ @current_queue_id
83
+ end
84
+
85
+ def self.current_params=(params)
86
+ @current_params = params
87
+ end
88
+
89
+ def self.current_params
90
+ @current_params
91
+ end
92
+
93
+ def self.current_retries=(retries)
94
+ @current_retries = retries
95
+ end
96
+
97
+ def self.current_retries
98
+ @current_retries
99
+ end
100
+
76
101
  def self.run(worker_data, &code_block)
77
102
  require '.pluginenv'
78
103
  require 'iron_mq'
@@ -80,27 +105,36 @@ class Fanforce::Workers
80
105
  require 'fanforce/api'
81
106
  require 'active_support/all'
82
107
 
83
- queue = IronMQ::Client.new.queue(worker_data['worker_id'])
84
- puts 'PROCESSING...'
108
+ current_queue_id = worker_data['queue_id']
109
+ queue = IronMQ::Client.new.queue(current_queue_id)
110
+
85
111
  job_num = 0
112
+ puts 'PROCESSING...'
86
113
  while (job = queue.get(timeout: 3600)) do
87
114
  puts "JOB #{job_num+=1}: #{job.body}"
88
- run_worker job, worker_data, &code_block
115
+ run_job job, worker_data, &code_block
89
116
  end
90
117
  puts 'DONE'
91
118
  end
92
119
 
93
- def self.run_worker(msg, worker_data, &code_block)
120
+ def self.retry(options)
121
+ self.new.enqueue(current_queue_id, current_params, options.merge(retries: current_retries + 1))
122
+ end
123
+
124
+ def self.run_job(job, worker_data, &code_block)
94
125
  puts '----------------------------------------------------------'
95
126
  print 'PROCESSING MESSAGE: '
96
- task_data = Fanforce.decode_json(msg.body)
127
+
128
+ task_data = Fanforce.decode_json(current_job_body)
129
+ current_params = task_data[:params]
130
+ current_retries = task_data[:retries]
97
131
 
98
132
  set_env_vars(worker_data['env_vars'])
99
- code_block.call(task_data[:params].clone, task_data[:retries], worker_data['worker_id'])
100
- msg.delete
133
+ code_block.call(task_data[:params].clone, task_data[:retries], worker_data['queue_id'])
134
+ job.delete
101
135
 
102
136
  rescue Exception => e
103
- if msg.nil?
137
+ if job.nil?
104
138
  puts 'MESSAGE IS NIL'
105
139
  return
106
140
  end
@@ -114,10 +148,10 @@ class Fanforce::Workers
114
148
  error[:curl_command] = e.curl_command if e.respond_to?(:curl_command)
115
149
 
116
150
  puts "ADDING TO ERROR CACHE: #{error.to_json}"
117
- msg.delete
151
+ job.delete
118
152
  puts 'DELETED MESSAGE'
119
153
 
120
- self.add_error worker_data['worker_id'], error
154
+ self.add_error worker_data['queue_id'], error
121
155
  end
122
156
 
123
157
  def self.set_env_vars(vars)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fanforce-workers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Caleb Clark