sidekiq_liviness 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.
- checksums.yaml +7 -0
- data/lib/sidekiq_liviness.rb +31 -0
- data/lib/sidekiq_liviness/server.rb +37 -0
- data/lib/sidekiq_liviness/version.rb +5 -0
- metadata +100 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f4f213bf5a66bfbcf7becabfa975011bc1cc56b78e84dcd350775242b454395d
|
4
|
+
data.tar.gz: ac62a2200a189d96bdd4eff05db87821d7ce7ffc8b4ddf5bdee49aab7eaae93b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3721606609848a83fd406f8375407799690e03f011e3f4cc98629939281be8c55c2431f9e0c0b6010b9b3dedb513028ed156838f98c31055eee2e656858e6946
|
7
|
+
data.tar.gz: abe0bf054c0fd245f1f037d56a521cd4cbb4c82e6da986adf50784e619db33b98fadb7a91c8c3bc192445877d12b86c0f9ec6da1b929e8a6705304d59f25edfb
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "sidekiq"
|
4
|
+
require "sidekiq/api"
|
5
|
+
require_relative "sidekiq_liviness/server"
|
6
|
+
require_relative "sidekiq_liviness/version"
|
7
|
+
|
8
|
+
module SidekiqLiviness
|
9
|
+
def self.start
|
10
|
+
Sidekiq.configure_server do |config|
|
11
|
+
config.on(:startup) do
|
12
|
+
@server_pid = fork do
|
13
|
+
SidekiqLiviness::Server.run!
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
config.on(:shutdown) do
|
18
|
+
Process.kill("TERM", @server_pid) unless @server_pid.nil?
|
19
|
+
Process.wait(@server_pid) unless @server_pid.nil?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.alive?
|
25
|
+
# Find current process if exists
|
26
|
+
process = Sidekiq::ProcessSet.new.find { |p| p["pid"] == ::Process.ppid }
|
27
|
+
return false unless process
|
28
|
+
|
29
|
+
process["beat"] > (Time.now.to_i - 15)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rack"
|
4
|
+
|
5
|
+
module SidekiqLiviness
|
6
|
+
class Server
|
7
|
+
class << self
|
8
|
+
def run!
|
9
|
+
handler = Rack::Handler.get("webrick")
|
10
|
+
|
11
|
+
Signal.trap("TERM") { handler.shutdown }
|
12
|
+
|
13
|
+
handler.run(self, Port: port, Host: "0.0.0.0")
|
14
|
+
end
|
15
|
+
|
16
|
+
def call(env)
|
17
|
+
if Rack::Request.new(env).path != path
|
18
|
+
[404, {}, [""]]
|
19
|
+
elsif SidekiqLiviness.alive?
|
20
|
+
[200, {}, [""]]
|
21
|
+
else
|
22
|
+
[500, {}, [""]]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def port
|
29
|
+
ENV.fetch("SIDEKIQ_LIVINESS_PORT") { 7433 }
|
30
|
+
end
|
31
|
+
|
32
|
+
def path
|
33
|
+
ENV.fetch("SIDEKIQ_LIVINESS_PATH") { "/healthz" }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sidekiq_liviness
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mikko Kokkonen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-02-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rack
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sidekiq
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '6'
|
34
|
+
- - ">"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '6'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "~>"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '6'
|
44
|
+
- - ">"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '6'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: webrick
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.6'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.6'
|
61
|
+
description: SidekiqLiviness offers a solution to add liveness probe of a Sidekiq
|
62
|
+
instance.
|
63
|
+
email:
|
64
|
+
- mikko.kokkonen@itsmycargo.com
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- lib/sidekiq_liviness.rb
|
70
|
+
- lib/sidekiq_liviness/server.rb
|
71
|
+
- lib/sidekiq_liviness/version.rb
|
72
|
+
homepage: https://github.com/mikian/sidekiq_liviness
|
73
|
+
licenses:
|
74
|
+
- MIT
|
75
|
+
metadata:
|
76
|
+
bug_tracker_uri: https://github.com/mikian/sidekiq_liviness/issues
|
77
|
+
changelog_uri: https://github.com/mikian/sidekiq_liviness/blob/main/CHANGELOG.md
|
78
|
+
documentation_uri: https://github.com/mikian/sidekiq_liviness
|
79
|
+
homepage_uri: https://github.com/mikian/sidekiq_liviness
|
80
|
+
source_code_uri: https://github.com/mikian/sidekiq_liviness
|
81
|
+
post_install_message:
|
82
|
+
rdoc_options: []
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 2.3.0
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
requirements: []
|
96
|
+
rubygems_version: 3.2.3
|
97
|
+
signing_key:
|
98
|
+
specification_version: 4
|
99
|
+
summary: Liveness probe for Sidekiq on Kubernetes deployments.
|
100
|
+
test_files: []
|