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 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 x jobs completed
13
- * Longest job duration over last x jobs completed
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.0.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.multi do
28
- Resque.redis.lpush(jobs_duration_key, duration)
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
@@ -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.0.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-09}
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 = [
@@ -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.0.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-09 00:00:00.000000000 -04:00
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: &11381140 !ruby/object:Gem::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: *11381140
25
+ version_requirements: *21844660
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: minitest
28
- requirement: &11380000 !ruby/object:Gem::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: *11380000
36
+ version_requirements: *21837700
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bundler
39
- requirement: &11378600 !ruby/object:Gem::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: *11378600
47
+ version_requirements: *21836340
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: jeweler
50
- requirement: &11377480 !ruby/object:Gem::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: *11377480
58
+ version_requirements: *21834780
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: rcov
61
- requirement: &11376400 !ruby/object:Gem::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: *11376400
69
+ version_requirements: *21833280
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: mynyml-redgreen
72
- requirement: &11374840 !ruby/object:Gem::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: *11374840
80
+ version_requirements: *21832280
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: ruby-debug19
83
- requirement: &11347340 !ruby/object:Gem::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: *11347340
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: 3802864521302634812
133
+ hash: 2089669386306192026
134
134
  required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  none: false
136
136
  requirements: