sidekiq_alive 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -3
- data/README.md +36 -2
- data/lib/sidekiq_alive/config.rb +3 -1
- data/lib/sidekiq_alive/version.rb +1 -1
- data/lib/sidekiq_alive.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 788fbb3fc817ea121b46363271bcd0f1b814688a92082febf0ccd7432195c03c
|
4
|
+
data.tar.gz: 6065782d4680efe3c35695b06ef5ca748ef55942c7c0548b8e77fc4a1b413bbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c388b1aeffd3967a2c126d9f0a6c1b823ac7ff05eff2d5adbb7900342ffa493fd312cf872888da2753484a8d7b9b84461b44ca500c94412d6d6df5906b011207
|
7
|
+
data.tar.gz: c06b9d7cac1f92dfcadb02493190003034fdb3b2144ea7c9d2793b5d1773b07be50804c56ad401f46cd73f0c3af16879ef5e670223816282a25fececeaab695f
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sidekiq_alive (1.
|
4
|
+
sidekiq_alive (1.1.0)
|
5
5
|
sidekiq
|
6
6
|
sinatra
|
7
7
|
|
@@ -49,7 +49,7 @@ GEM
|
|
49
49
|
rack (~> 1.5)
|
50
50
|
rack-protection (~> 1.4)
|
51
51
|
tilt (>= 1.3, < 3)
|
52
|
-
tilt (2.0.
|
52
|
+
tilt (2.0.9)
|
53
53
|
|
54
54
|
PLATFORMS
|
55
55
|
ruby
|
@@ -65,4 +65,4 @@ DEPENDENCIES
|
|
65
65
|
sidekiq_alive!
|
66
66
|
|
67
67
|
BUNDLED WITH
|
68
|
-
1.
|
68
|
+
1.17.1
|
data/README.md
CHANGED
@@ -11,10 +11,10 @@ __How?__
|
|
11
11
|
|
12
12
|
A http server is started and on each requests validates that a liveness key is stored in Redis. If it is there means is working.
|
13
13
|
|
14
|
-
A Sidekiq
|
14
|
+
A Sidekiq worker is the responsable to storing this key. If Sidekiq stops processing workers
|
15
15
|
this key gets expired by Redis an consequently the http server will return a 500 error.
|
16
16
|
|
17
|
-
This
|
17
|
+
This worker is responsible to requeue itself for the next liveness probe.
|
18
18
|
|
19
19
|
Each instance in kubernetes will be checked based on `ENV` variable `HOSTNAME` (kubernetes sets this for each replica/pod).
|
20
20
|
|
@@ -35,6 +35,26 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
$ gem install sidekiq_alive
|
37
37
|
|
38
|
+
Run `Sidekiq` with a `sidekiq_alive` queue.
|
39
|
+
|
40
|
+
```
|
41
|
+
sidekiq -q sidekiq_alive
|
42
|
+
```
|
43
|
+
|
44
|
+
or in your config:
|
45
|
+
|
46
|
+
_sidekiq.yml_
|
47
|
+
```yaml
|
48
|
+
queues:
|
49
|
+
- default
|
50
|
+
- sidekiq_alive
|
51
|
+
```
|
52
|
+
|
53
|
+
__IMPORTANT:__
|
54
|
+
|
55
|
+
Make sure you run a `quiet` every time before you stop the pods [(issue)](https://github.com/arturictus/sidekiq_alive/issues/10). That's not only important for SidekiqAlive it's important that your workers finish before you stop Sidekiq.
|
56
|
+
Check [recommended kubernetes setup](#kubernetes-setup)
|
57
|
+
|
38
58
|
## Usage
|
39
59
|
|
40
60
|
SidekiqAlive will start when running `sidekiq` command.
|
@@ -135,6 +155,18 @@ SidekiqAlive.setup do |config|
|
|
135
155
|
#
|
136
156
|
# require 'net/http'
|
137
157
|
# config.callback = proc { Net::HTTP.get("https://status.com/ping") }
|
158
|
+
|
159
|
+
# ==> Preferred Queue
|
160
|
+
# Sidekiq Alive will try to enqueue the workers to this queue. If not found
|
161
|
+
# will do it to the first available queue.
|
162
|
+
# It's a good practice to add a dedicated queue for sidekiq alive. If the queue
|
163
|
+
# where sidekiq is processing SidekiqALive gets overloaded and takes
|
164
|
+
# longer than the `ttl` to process SidekiqAlive::Worker will make the liveness probe
|
165
|
+
# to fail. Sidekiq overloaded and restarting every `ttl` cicle.
|
166
|
+
# Add the sidekiq alive queue!!
|
167
|
+
# default: :sidekiq_alive
|
168
|
+
#
|
169
|
+
# config.preferred_queue = :other
|
138
170
|
end
|
139
171
|
```
|
140
172
|
|
@@ -144,6 +176,8 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
144
176
|
|
145
177
|
To install this gem onto your local machine, run `bundle exec rake install`.
|
146
178
|
|
179
|
+
Here is a example [rails app](https://github.com/arturictus/sidekiq_alive_example)
|
180
|
+
|
147
181
|
## Contributing
|
148
182
|
|
149
183
|
Bug reports and pull requests are welcome on GitHub at https://github.com/arturictus/sidekiq_alive. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/lib/sidekiq_alive/config.rb
CHANGED
@@ -6,7 +6,8 @@ module SidekiqAlive
|
|
6
6
|
:liveness_key,
|
7
7
|
:time_to_live,
|
8
8
|
:callback,
|
9
|
-
:registered_instance_key
|
9
|
+
:registered_instance_key,
|
10
|
+
:preferred_queue
|
10
11
|
|
11
12
|
def initialize
|
12
13
|
set_defaults
|
@@ -18,6 +19,7 @@ module SidekiqAlive
|
|
18
19
|
@time_to_live = 10 * 60
|
19
20
|
@callback = proc {}
|
20
21
|
@registered_instance_key = "SIDEKIQ_REGISTERED_INSTANCE"
|
22
|
+
@preferred_queue = :sidekiq_alive
|
21
23
|
end
|
22
24
|
|
23
25
|
end
|
data/lib/sidekiq_alive.rb
CHANGED
@@ -6,6 +6,9 @@ require "sidekiq_alive/config"
|
|
6
6
|
module SidekiqAlive
|
7
7
|
def self.start
|
8
8
|
Sidekiq.configure_server do |config|
|
9
|
+
|
10
|
+
SidekiqAlive::Worker.sidekiq_options queue: SidekiqAlive.select_queue(config.options[:queues])
|
11
|
+
|
9
12
|
config.on(:startup) do
|
10
13
|
SidekiqAlive.tap do |sa|
|
11
14
|
sa.logger.info(banner)
|
@@ -16,6 +19,7 @@ module SidekiqAlive
|
|
16
19
|
sa.logger.info(successful_startup_text)
|
17
20
|
end
|
18
21
|
end
|
22
|
+
|
19
23
|
config.on(:quiet) do
|
20
24
|
SidekiqAlive.unregister_current_instance
|
21
25
|
end
|
@@ -26,6 +30,14 @@ module SidekiqAlive
|
|
26
30
|
|
27
31
|
end
|
28
32
|
|
33
|
+
def self.select_queue(queues)
|
34
|
+
@queue = if queues.find { |e| e.to_sym == config.preferred_queue.to_sym }
|
35
|
+
config.preferred_queue.to_sym
|
36
|
+
else
|
37
|
+
queues.first
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
29
41
|
def self.register_current_instance
|
30
42
|
register_instance(current_instance_register_key)
|
31
43
|
end
|
@@ -88,6 +100,8 @@ module SidekiqAlive
|
|
88
100
|
Port: #{config.port}
|
89
101
|
Time to live: #{config.time_to_live}s
|
90
102
|
Current instance register key: #{current_instance_register_key}
|
103
|
+
Worker running on queue: #{@queue}
|
104
|
+
|
91
105
|
|
92
106
|
starting ...
|
93
107
|
BANNER
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq_alive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artur Pañach
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|