resque-job-stats 0.0.0 → 0.1.0
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.
- data/README.rdoc +9 -6
- data/VERSION +1 -1
- data/lib/resque/plugins/job_stats/duration.rb +11 -4
- data/resque-job-stats.gemspec +2 -2
- data/test/test_job_stats.rb +2 -0
- metadata +17 -17
data/README.rdoc
CHANGED
@@ -9,8 +9,8 @@ Stats tracked are:
|
|
9
9
|
* Jobs performed
|
10
10
|
* Jobs failed
|
11
11
|
* Duration of last x jobs completed
|
12
|
-
* Average job duration over last
|
13
|
-
* Longest job duration over last
|
12
|
+
* Average job duration over last 100 jobs completed
|
13
|
+
* Longest job duration over last 100 jobs completed
|
14
14
|
|
15
15
|
This information can be used to help track performance and diagnose specific bottlenecks.
|
16
16
|
|
@@ -44,16 +44,19 @@ Alternatively you can include just the metric you wish to record.
|
|
44
44
|
extend Resque::Plugins::JobStats::Performed
|
45
45
|
extend Resque::Plugins::JobStats::Failed
|
46
46
|
extend Resque::Plugins::JobStats::Duration
|
47
|
-
extend Resque::Plugins::JobStats::Duration::Maximum
|
48
|
-
extend Resque::Plugins::JobStats::Duration::Average
|
49
|
-
|
50
|
-
record_job_duration_of_last 100
|
51
47
|
|
52
48
|
def self.perform(*payload)
|
53
49
|
# ...
|
54
50
|
end
|
55
51
|
end
|
56
52
|
|
53
|
+
Duration module also extends the class with two methods, job_rolling_avg and longest_job.
|
54
|
+
|
55
|
+
== TODO
|
56
|
+
|
57
|
+
* Allow classes to define how many job's duration to measure
|
58
|
+
* Add ui for stats in resque-web
|
59
|
+
|
57
60
|
== Contributing to resque-job-stats
|
58
61
|
|
59
62
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.0
|
@@ -24,16 +24,23 @@ module Resque
|
|
24
24
|
yield
|
25
25
|
duration = Time.now - start
|
26
26
|
|
27
|
-
Resque.redis.
|
28
|
-
|
29
|
-
Resque.redis.ltrim(jobs_duration_key, 0, job_durations_to_track)
|
30
|
-
end
|
27
|
+
Resque.redis.lpush(jobs_duration_key, duration)
|
28
|
+
Resque.redis.ltrim(jobs_duration_key, 0, job_durations_to_track)
|
31
29
|
end
|
32
30
|
|
33
31
|
def job_durations_to_track
|
34
32
|
100
|
35
33
|
end
|
36
34
|
|
35
|
+
def job_rolling_avg
|
36
|
+
job_times = job_durations
|
37
|
+
job_times.inject(0.0) {|s,j| s + j} / job_times.size
|
38
|
+
end
|
39
|
+
|
40
|
+
def longest_job
|
41
|
+
job_durations.max
|
42
|
+
end
|
43
|
+
|
37
44
|
end
|
38
45
|
end
|
39
46
|
end
|
data/resque-job-stats.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{resque-job-stats}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["alanpeabody"]
|
12
|
-
s.date = %q{2011-07-
|
12
|
+
s.date = %q{2011-07-14}
|
13
13
|
s.description = %q{Tracks jobs performed, failed, and the duration of the last 100 jobs for each job type.}
|
14
14
|
s.email = %q{gapeabody@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/test/test_job_stats.rb
CHANGED
@@ -66,6 +66,8 @@ class TestResqueJobStats < MiniTest::Unit::TestCase
|
|
66
66
|
assert_in_delta 0.3, SimpleJob.job_durations[0], 0.01
|
67
67
|
assert_in_delta 0.2, SimpleJob.job_durations[1], 0.01
|
68
68
|
assert_in_delta 0.1, SimpleJob.job_durations[2], 0.01
|
69
|
+
assert_in_delta 0.3, SimpleJob.longest_job, 0.01
|
70
|
+
assert_in_delta 0.2, SimpleJob.job_rolling_avg, 0.01
|
69
71
|
end
|
70
72
|
|
71
73
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-job-stats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,12 +9,12 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-07-
|
12
|
+
date: 2011-07-14 00:00:00.000000000 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: resque
|
17
|
-
requirement: &
|
17
|
+
requirement: &21844660 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 1.17.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *21844660
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: minitest
|
28
|
-
requirement: &
|
28
|
+
requirement: &21837700 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *21837700
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: bundler
|
39
|
-
requirement: &
|
39
|
+
requirement: &21836340 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.0.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *21836340
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: jeweler
|
50
|
-
requirement: &
|
50
|
+
requirement: &21834780 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 1.6.4
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *21834780
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rcov
|
61
|
-
requirement: &
|
61
|
+
requirement: &21833280 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *21833280
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: mynyml-redgreen
|
72
|
-
requirement: &
|
72
|
+
requirement: &21832280 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 0.7.1
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *21832280
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: ruby-debug19
|
83
|
-
requirement: &
|
83
|
+
requirement: &21814560 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ! '>='
|
@@ -88,7 +88,7 @@ dependencies:
|
|
88
88
|
version: '0'
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *21814560
|
92
92
|
description: Tracks jobs performed, failed, and the duration of the last 100 jobs
|
93
93
|
for each job type.
|
94
94
|
email: gapeabody@gmail.com
|
@@ -130,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
130
130
|
version: '0'
|
131
131
|
segments:
|
132
132
|
- 0
|
133
|
-
hash:
|
133
|
+
hash: 2089669386306192026
|
134
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
135
|
none: false
|
136
136
|
requirements:
|