gearman-ruby 3.0.2 → 3.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/VERSION.yml +1 -1
- data/examples/client_background.rb +3 -3
- data/examples/client_reverse.rb +2 -2
- data/examples/worker_reverse_string.rb +16 -9
- data/lib/gearman/worker.rb +16 -0
- metadata +6 -8
- data/examples/bgclient.rb +0 -19
data/Rakefile
CHANGED
@@ -8,8 +8,8 @@ begin
|
|
8
8
|
Jeweler::Tasks.new do |s|
|
9
9
|
s.name = "gearman-ruby"
|
10
10
|
s.summary = "Library for the Gearman distributed job system"
|
11
|
-
s.email = "
|
12
|
-
s.homepage = "http://github.com/
|
11
|
+
s.email = "gearman.ruby@librelist.com"
|
12
|
+
s.homepage = "http://github.com/gearman-ruby/gearman-ruby"
|
13
13
|
s.description = "Library for the Gearman distributed job system"
|
14
14
|
s.authors = ["John Ewart", "Colin Curtin", "Daniel Erat", "Ladislav Martincik", "Pablo Delgado", "Mauro Pompilio", "Antonio Garrote", "Kim Altintop"]
|
15
15
|
end
|
data/VERSION.yml
CHANGED
@@ -2,13 +2,13 @@ require 'rubygems'
|
|
2
2
|
#require 'gearman'
|
3
3
|
require '../lib/gearman'
|
4
4
|
|
5
|
-
servers = ['localhost:
|
5
|
+
servers = ['localhost:4730',]
|
6
6
|
|
7
7
|
client = Gearman::Client.new(servers)
|
8
8
|
taskset = Gearman::TaskSet.new(client)
|
9
9
|
|
10
10
|
task = Gearman::Task.new('sleep', 20, { :background => true })
|
11
|
-
|
11
|
+
task.on_complete {|d| puts d }
|
12
12
|
|
13
13
|
taskset.add_task(task)
|
14
|
-
|
14
|
+
taskset.wait(100)
|
data/examples/client_reverse.rb
CHANGED
@@ -7,7 +7,7 @@ require '../lib/gearman'
|
|
7
7
|
t = nil
|
8
8
|
threadcounter = 0
|
9
9
|
|
10
|
-
client = Gearman::Client.new('localhost
|
10
|
+
client = Gearman::Client.new('localhost')
|
11
11
|
|
12
12
|
|
13
13
|
myid = threadcounter
|
@@ -22,6 +22,6 @@ taskset = Gearman::TaskSet.new(client)
|
|
22
22
|
puts "#{jid} #{data}"
|
23
23
|
|
24
24
|
time = Time.now() + rand(120) + 10
|
25
|
-
|
25
|
+
task.schedule(time)
|
26
26
|
taskset.add_task(task)
|
27
27
|
end
|
@@ -3,18 +3,25 @@ require '../lib/gearman'
|
|
3
3
|
|
4
4
|
# String reverse worker
|
5
5
|
|
6
|
-
servers = ['localhost:
|
6
|
+
servers = ['localhost:4730']
|
7
7
|
|
8
|
+
t = nil
|
8
9
|
jobnum = 0
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
(0..1).each do
|
12
|
+
t = Thread.new {
|
13
|
+
w = Gearman::Worker.new(servers)
|
14
|
+
w.add_ability('reverse_string') do |data,job|
|
15
|
+
result = data.reverse
|
16
|
+
puts "Job: #{job.inspect} Data: #{data.inspect} Reverse: #{result} "
|
17
|
+
puts "Completed job ##{jobnum}"
|
18
|
+
jobnum += 1
|
19
|
+
result
|
20
|
+
end
|
21
|
+
loop { w.work }
|
22
|
+
}
|
17
23
|
end
|
18
|
-
loop { w.work }
|
19
24
|
|
25
|
+
puts "Waiting for threads..."
|
26
|
+
t.join
|
20
27
|
|
data/lib/gearman/worker.rb
CHANGED
@@ -248,6 +248,20 @@ class Worker
|
|
248
248
|
@sockets.values.each {|s| announce_ability(s, func, timeout) }
|
249
249
|
end
|
250
250
|
|
251
|
+
|
252
|
+
##
|
253
|
+
# Add an after-ability hook
|
254
|
+
#
|
255
|
+
# The passed-in block of code will be executed after the work block for
|
256
|
+
# jobs with the same function name. It takes two arguments, the result of
|
257
|
+
# the work and the original job data. This way, if you need to hook into
|
258
|
+
# *after* the job_complete packet is sent to the server, you can do so.
|
259
|
+
#
|
260
|
+
# N.B The after-ability hook ONLY runs if the ability was successful and no
|
261
|
+
# exceptions were raised.
|
262
|
+
#
|
263
|
+
# @param func function name (without prefix)
|
264
|
+
#
|
251
265
|
def after_ability(func, &f)
|
252
266
|
@after_abilities[func] = Ability.new(f)
|
253
267
|
end
|
@@ -291,6 +305,7 @@ class Worker
|
|
291
305
|
ret = ability.run(data, Job.new(sock, handle))
|
292
306
|
rescue Exception => e
|
293
307
|
exception = e
|
308
|
+
Util.logger.debug "GearmanRuby: Exception: #{e}\n#{e.backtrace.join("\n")}\n"
|
294
309
|
end
|
295
310
|
|
296
311
|
cmd = if ret && exception.nil?
|
@@ -316,6 +331,7 @@ class Worker
|
|
316
331
|
begin
|
317
332
|
after_ability.run(ret, data)
|
318
333
|
rescue Exception => e
|
334
|
+
Util.logger.debug "GearmanRuby: Exception: #{e}\n#{e.backtrace.join("\n")}\n"
|
319
335
|
nil
|
320
336
|
end
|
321
337
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gearman-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 3.0.
|
9
|
+
- 3
|
10
|
+
version: 3.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- John Ewart
|
@@ -22,12 +22,12 @@ autorequire:
|
|
22
22
|
bindir: bin
|
23
23
|
cert_chain: []
|
24
24
|
|
25
|
-
date: 2010-
|
25
|
+
date: 2010-11-12 00:00:00 -08:00
|
26
26
|
default_executable:
|
27
27
|
dependencies: []
|
28
28
|
|
29
29
|
description: Library for the Gearman distributed job system
|
30
|
-
email:
|
30
|
+
email: gearman.ruby@librelist.com
|
31
31
|
executables: []
|
32
32
|
|
33
33
|
extensions: []
|
@@ -77,9 +77,8 @@ files:
|
|
77
77
|
- test/mock_worker_test.rb
|
78
78
|
- test/util_test.rb
|
79
79
|
- test/worker_test.rb
|
80
|
-
- examples/bgclient.rb
|
81
80
|
has_rdoc: true
|
82
|
-
homepage: http://github.com/
|
81
|
+
homepage: http://github.com/gearman-ruby/gearman-ruby
|
83
82
|
licenses: []
|
84
83
|
|
85
84
|
post_install_message:
|
@@ -118,7 +117,6 @@ test_files:
|
|
118
117
|
- test/mock_worker_test.rb
|
119
118
|
- test/util_test.rb
|
120
119
|
- test/worker_test.rb
|
121
|
-
- examples/bgclient.rb
|
122
120
|
- examples/calculus_client.rb
|
123
121
|
- examples/calculus_worker.rb
|
124
122
|
- examples/client.rb
|
data/examples/bgclient.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
#require 'gearman'
|
3
|
-
require '../lib/gearman'
|
4
|
-
require 'json'
|
5
|
-
|
6
|
-
servers = ['localhost:4731']
|
7
|
-
|
8
|
-
client = Gearman::Client.new(servers)
|
9
|
-
taskset = Gearman::TaskSet.new(client)
|
10
|
-
function = "reverse_string"
|
11
|
-
struct_data = {
|
12
|
-
:site_id => 45,
|
13
|
-
:domain => 'www.google.com'
|
14
|
-
}
|
15
|
-
#data = JSON.generate(struct_data)
|
16
|
-
data = "testing"
|
17
|
-
task = Gearman::BackgroundTask.new(function, data)
|
18
|
-
taskset.add_task(task)
|
19
|
-
|