-
Notifications
You must be signed in to change notification settings - Fork 17
/
long_run_worker.rb
61 lines (46 loc) · 1.43 KB
/
long_run_worker.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
require 'iron_worker'
class LongRunWorker < IronWorker::Base
merge_gem 'concur'
merge_gem 'iron_mq'
attr_accessor :config, :num_to_add
def run
@client = IronMQ::Client.new(@config['iron_mq'])
@client.queue_name = 'ironmq-gem-long'
start = Time.now
puts "Queuing #{@num_to_add} items at #{start}..."
executor = Concur::Executor.new_thread_pool_executor(50)
@num_to_add.times do |i|
task = executor.execute do
begin
puts "POST #{i}..."
res = @client.messages.post("hello world! #{i}")
rescue => ex
puts "ERROR! #{ex.class.name}: #{ex.message} -- #{ex.backtrace.inspect}"
raise ex
end
end
end
i = 0
while executor.queue_size > 0 do
i += 1
puts "waiting #{i}, queue size=#{executor.queue_size}"
sleep 2
end
put_time = (Time.now.to_f - start.to_f)
puts "Finished pushing in #{put_time} seconds"
#exit if true
start = Time.now
puts "Getting and deleting #{@num_to_add} items at #{start}..."
@num_to_add.times do |i|
puts "GET #{i}..."
res = @client.messages.get()
p res
puts "DELETE #{i}..."
res = @client.messages.delete(res["id"])
p res
end
puts "Finished pushing #{@num_to_add} items in #{put_time} seconds."
puts "Finished getting and deleting #{@num_to_add} items in #{(Time.now.to_f - start.to_f)} seconds."
executor.shutdown
end
end