resque-retry 1.3.2 → 1.4.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.
- checksums.yaml +4 -4
- data/HISTORY.md +4 -0
- data/README.md +55 -9
- data/lib/resque-retry/version.rb +1 -1
- data/resque-retry.gemspec +5 -5
- data/test/exponential_backoff_test.rb +1 -1
- data/test/multiple_failure_test.rb +1 -1
- data/test/redis-test.conf +1 -2
- data/test/resque_test.rb +2 -2
- data/test/retry_criteria_test.rb +2 -2
- data/test/retry_exception_delay_test.rb +1 -2
- data/test/retry_inheriting_checks_test.rb +1 -1
- data/test/retry_test.rb +1 -1
- data/test/server_helpers_test.rb +1 -4
- data/test/server_test.rb +4 -5
- data/test/test_helper.rb +5 -10
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4c061060637465cbab7c2348d2facefa1816493
|
4
|
+
data.tar.gz: 3b76a1d34c68eeb3fae868900b75ca02192bc851
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63bcdd107167973953477e6e591c8ce86d2a2957b41bb93cbe161153f5f2e6fd69e417718ba46d497f755fcde882373f2f992538c48b7aa11b7a449ba2aec867
|
7
|
+
data.tar.gz: 4d34d77f1fe0b4ae1728495865f79f20b05ef7896ddf30d23d70cdef2d03caf57ff995617e2e6aff3b854a34865933a05913a638e2fb0e285f75685bb334771a
|
data/HISTORY.md
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
resque-retry
|
2
2
|
============
|
3
3
|
|
4
|
-
A [Resque][rq] plugin. Requires Resque ~> 1.25 & [resque-scheduler][rqs] ~>
|
4
|
+
A [Resque][rq] plugin. Requires Resque ~> 1.25 & [resque-scheduler][rqs] ~> 4.0.
|
5
5
|
|
6
|
-
|
7
|
-
resque jobs.
|
6
|
+
This gem provides retry, delay and exponential backoff support for resque jobs.
|
8
7
|
|
9
8
|
* Redis backed retry count/limit.
|
10
9
|
* Retry on all or specific exceptions.
|
@@ -107,16 +106,64 @@ also checkout the resque-web additions!
|
|
107
106
|
The new Retry tab displays delayed jobs with retry information; the number of
|
108
107
|
attempts and the exception details from the last failure.
|
109
108
|
|
110
|
-
|
109
|
+
|
110
|
+
### Configuring and running the Resque-Web Interface
|
111
|
+
|
112
|
+
#### Using a Rack configuration:
|
113
|
+
|
114
|
+
One alternative is to use a rack configuration file. To use this, make
|
115
|
+
sure you include this in your `config.ru` or similar file:
|
116
|
+
|
111
117
|
```ruby
|
112
118
|
require 'resque-retry'
|
113
119
|
require 'resque-retry/server'
|
114
120
|
|
115
|
-
# require your
|
121
|
+
# Make sure to require your workers & application code below this line:
|
122
|
+
# require '[path]/[to]/[jobs]/your_worker'
|
116
123
|
|
124
|
+
# Run the server
|
117
125
|
run Resque::Server.new
|
118
126
|
```
|
119
127
|
|
128
|
+
As an example, you could run this server with the following command:
|
129
|
+
```
|
130
|
+
rackup -p 9292 config.ru
|
131
|
+
```
|
132
|
+
|
133
|
+
When using bundler, you can also run the server like this:
|
134
|
+
```
|
135
|
+
bundle exec rackup -p 9292 config.ru
|
136
|
+
```
|
137
|
+
|
138
|
+
|
139
|
+
#### Using the 'resque-web' command with a configuration file:
|
140
|
+
|
141
|
+
Another alternative is to use resque's built-in 'resque-web' command with
|
142
|
+
the additional resque-retry tabs. In order to do this, you must first create
|
143
|
+
a configuration file. For the sake of this example we'll create the configuration
|
144
|
+
file in a 'config' directory, and name it 'resque_web_config.rb'. In practice
|
145
|
+
you could rename this configuration file to anything you'd like and place in your
|
146
|
+
project in any directory of your choosing. The contents of the configuration file
|
147
|
+
would look like this:
|
148
|
+
|
149
|
+
```ruby
|
150
|
+
# [app_dir]/config/resque_web_config.rb
|
151
|
+
require 'resque-retry'
|
152
|
+
require 'resque-retry/server'
|
153
|
+
|
154
|
+
# Make sure to require your workers & application code below this line:
|
155
|
+
# require '[path]/[to]/[jobs]/your_worker'
|
156
|
+
|
157
|
+
```
|
158
|
+
|
159
|
+
Once you have the configuration file ready, you can pass the configuration file
|
160
|
+
to the resque-web command as a parameter, like so:
|
161
|
+
|
162
|
+
```
|
163
|
+
resque-web [app_dir]/config/resque_web_config.rb
|
164
|
+
```
|
165
|
+
|
166
|
+
|
120
167
|
Retry Options & Logic
|
121
168
|
---------------------
|
122
169
|
|
@@ -437,7 +484,6 @@ Contributing/Pull Requests
|
|
437
484
|
* If you edit the gemspec/version etc, please do so in another commit.
|
438
485
|
|
439
486
|
[god]: http://github.com/mojombo/god
|
440
|
-
[rq]: http://github.com/
|
441
|
-
[rqs]: http://github.com/
|
442
|
-
[bundler]: http://
|
443
|
-
|
487
|
+
[rq]: http://github.com/resque/resque
|
488
|
+
[rqs]: http://github.com/resque/resque-scheduler
|
489
|
+
[bundler]: http://bundler.io
|
data/lib/resque-retry/version.rb
CHANGED
data/resque-retry.gemspec
CHANGED
@@ -30,13 +30,13 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.require_paths = %w[lib]
|
31
31
|
|
32
32
|
s.add_dependency('resque', '~> 1.25')
|
33
|
-
s.add_dependency('resque-scheduler', '~>
|
33
|
+
s.add_dependency('resque-scheduler', '~> 4.0')
|
34
34
|
|
35
|
-
s.add_development_dependency('rake', '~> 10.
|
36
|
-
s.add_development_dependency('minitest', '~>
|
35
|
+
s.add_development_dependency('rake', '~> 10.3')
|
36
|
+
s.add_development_dependency('minitest', '~> 5.5')
|
37
37
|
s.add_development_dependency('rack-test', '~> 0.6')
|
38
38
|
s.add_development_dependency('yard', '~> 0.8')
|
39
39
|
s.add_development_dependency('json', '~> 1.8')
|
40
|
-
s.add_development_dependency('simplecov', '~> 0.
|
41
|
-
s.add_development_dependency('mocha', '~> 1.
|
40
|
+
s.add_development_dependency('simplecov', '~> 0.9')
|
41
|
+
s.add_development_dependency('mocha', '~> 1.1')
|
42
42
|
end
|
data/test/redis-test.conf
CHANGED
@@ -13,8 +13,7 @@ port 9736
|
|
13
13
|
|
14
14
|
# If you want you can bind a single interface, if the bind option is not
|
15
15
|
# specified all the interfaces will listen for connections.
|
16
|
-
|
17
|
-
# bind 127.0.0.1
|
16
|
+
bind 127.0.0.1
|
18
17
|
|
19
18
|
# Close the connection after a client is idle for N seconds (0 to disable)
|
20
19
|
timeout 300
|
data/test/resque_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
# make sure the worlds not fallen from beneith us.
|
4
|
-
class ResqueTest <
|
4
|
+
class ResqueTest < Minitest::Test
|
5
5
|
def test_resque_version
|
6
6
|
major, minor, patch = Resque::Version.split('.')
|
7
7
|
assert_equal 1, major.to_i, 'major version does not match'
|
@@ -15,4 +15,4 @@ class ResqueTest < MiniTest::Unit::TestCase
|
|
15
15
|
assert_equal 1, Resque.info[:processed], 'processed job'
|
16
16
|
assert_equal 0, Resque.delayed_queue_schedule_size
|
17
17
|
end
|
18
|
-
end
|
18
|
+
end
|
data/test/retry_criteria_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class RetryCriteriaTest <
|
3
|
+
class RetryCriteriaTest < Minitest::Test
|
4
4
|
def setup
|
5
5
|
Resque.redis.flushall
|
6
6
|
@worker = Resque::Worker.new(:testing)
|
@@ -72,4 +72,4 @@ class RetryCriteriaTest < MiniTest::Unit::TestCase
|
|
72
72
|
assert_equal 2, Resque.info[:failed], 'failed jobs'
|
73
73
|
assert_equal 3, Resque.info[:processed], 'processed job'
|
74
74
|
end
|
75
|
-
end
|
75
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class RetryTest <
|
3
|
+
class RetryTest < Minitest::Test
|
4
4
|
def setup
|
5
5
|
Resque.redis.flushall
|
6
6
|
@worker = Resque::Worker.new(:testing)
|
@@ -43,5 +43,4 @@ class RetryTest < MiniTest::Unit::TestCase
|
|
43
43
|
assert_in_delta (start_time + 10), delayed[1], 1.00, '2nd retry delay timestamp'
|
44
44
|
assert_in_delta (start_time + 15), delayed[2], 1.00, '3rd retry delay timestamp'
|
45
45
|
end
|
46
|
-
|
47
46
|
end
|
data/test/retry_test.rb
CHANGED
data/test/server_helpers_test.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
|
3
2
|
require 'resque'
|
4
3
|
require 'resque-retry/server'
|
5
4
|
|
6
|
-
class ServerHelpersTest <
|
7
|
-
|
5
|
+
class ServerHelpersTest < Minitest::Test
|
8
6
|
def setup
|
9
7
|
Resque.redis.flushall
|
10
8
|
@worker = Resque::Worker.new(:testing)
|
@@ -21,5 +19,4 @@ class ServerHelpersTest < MiniTest::Unit::TestCase
|
|
21
19
|
job = Resque.delayed_timestamp_peek(timestamp, 0, 1).first
|
22
20
|
assert_equal '0', @helpers.retry_attempts_for_job(job), 'should have 0 retry attempt'
|
23
21
|
end
|
24
|
-
|
25
22
|
end
|
data/test/server_test.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
|
3
2
|
require 'resque-retry/server'
|
4
|
-
|
3
|
+
|
4
|
+
ENV['RACK_ENV'] = ENV['RAILS_ENV']
|
5
5
|
|
6
6
|
# Testing the Resque web interface additions.
|
7
|
-
class ServerTest < MiniTest::
|
7
|
+
class ServerTest < MiniTest::Test
|
8
8
|
include Rack::Test::Methods
|
9
9
|
|
10
10
|
def setup
|
@@ -41,5 +41,4 @@ class ServerTest < MiniTest::Unit::TestCase
|
|
41
41
|
get '/retry'
|
42
42
|
assert last_response.body.include?('<b>1</b> timestamps'), 'should have 1 retry jobs'
|
43
43
|
end
|
44
|
-
|
45
|
-
end
|
44
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -4,7 +4,7 @@ $TESTING = true
|
|
4
4
|
|
5
5
|
require 'rubygems'
|
6
6
|
require 'timeout'
|
7
|
-
require 'minitest/
|
7
|
+
require 'minitest/autorun'
|
8
8
|
require 'minitest/pride'
|
9
9
|
require 'rack/test'
|
10
10
|
require 'mocha/setup'
|
@@ -32,21 +32,16 @@ if !system('which redis-cli')
|
|
32
32
|
abort ''
|
33
33
|
end
|
34
34
|
|
35
|
-
# This code is run
|
36
|
-
# Redis server is
|
37
|
-
|
38
|
-
next if $!
|
39
|
-
|
40
|
-
exit_code = MiniTest::Unit.new.run(ARGV)
|
41
|
-
`redis-cli -p 9736 shutdown nosave`
|
42
|
-
end
|
35
|
+
# This code is run after all the tests have finished running to ensure that the
|
36
|
+
# Redis server is shutdowa
|
37
|
+
Minitest.after_run { `redis-cli -p 9736 shutdown nosave` }
|
43
38
|
|
44
39
|
puts "Starting redis for testing at localhost:9736..."
|
45
40
|
`redis-server #{dir}/redis-test.conf`
|
46
41
|
Resque.redis = '127.0.0.1:9736'
|
47
42
|
|
48
43
|
# Test helpers
|
49
|
-
class
|
44
|
+
class Minitest::Test
|
50
45
|
def perform_next_job(worker, &block)
|
51
46
|
return unless job = worker.reserve
|
52
47
|
worker.perform(job, &block)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque-retry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luke Antins
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2015-01-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: resque
|
@@ -32,42 +32,42 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '
|
35
|
+
version: '4.0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '4.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rake
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '10.
|
49
|
+
version: '10.3'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '10.
|
56
|
+
version: '10.3'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: minitest
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '
|
63
|
+
version: '5.5'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '
|
70
|
+
version: '5.5'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rack-test
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -116,28 +116,28 @@ dependencies:
|
|
116
116
|
requirements:
|
117
117
|
- - "~>"
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: '0.
|
119
|
+
version: '0.9'
|
120
120
|
type: :development
|
121
121
|
prerelease: false
|
122
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
124
|
- - "~>"
|
125
125
|
- !ruby/object:Gem::Version
|
126
|
-
version: '0.
|
126
|
+
version: '0.9'
|
127
127
|
- !ruby/object:Gem::Dependency
|
128
128
|
name: mocha
|
129
129
|
requirement: !ruby/object:Gem::Requirement
|
130
130
|
requirements:
|
131
131
|
- - "~>"
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: '1.
|
133
|
+
version: '1.1'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
138
|
- - "~>"
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version: '1.
|
140
|
+
version: '1.1'
|
141
141
|
description: |2
|
142
142
|
resque-retry provides retry, delay and exponential backoff support for
|
143
143
|
resque jobs.
|
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
213
|
version: '0'
|
214
214
|
requirements: []
|
215
215
|
rubyforge_project:
|
216
|
-
rubygems_version: 2.4.
|
216
|
+
rubygems_version: 2.4.2
|
217
217
|
signing_key:
|
218
218
|
specification_version: 4
|
219
219
|
summary: A resque plugin; provides retry, delay and exponential backoff support for
|