sidekiq 3.5.4 → 7.2.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 +5 -5
- data/Changes.md +992 -6
- data/LICENSE.txt +9 -0
- data/README.md +52 -43
- data/bin/sidekiq +22 -4
- data/bin/sidekiqload +209 -115
- data/bin/sidekiqmon +11 -0
- data/lib/generators/sidekiq/job_generator.rb +57 -0
- data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
- data/lib/generators/sidekiq/templates/job_spec.rb.erb +6 -0
- data/lib/generators/sidekiq/templates/job_test.rb.erb +8 -0
- data/lib/sidekiq/api.rb +633 -295
- data/lib/sidekiq/capsule.rb +127 -0
- data/lib/sidekiq/cli.rb +270 -248
- data/lib/sidekiq/client.rb +139 -108
- data/lib/sidekiq/component.rb +68 -0
- data/lib/sidekiq/config.rb +287 -0
- data/lib/sidekiq/deploy.rb +62 -0
- data/lib/sidekiq/embedded.rb +61 -0
- data/lib/sidekiq/fetch.rb +53 -121
- data/lib/sidekiq/job.rb +374 -0
- data/lib/sidekiq/job_logger.rb +51 -0
- data/lib/sidekiq/job_retry.rb +301 -0
- data/lib/sidekiq/job_util.rb +107 -0
- data/lib/sidekiq/launcher.rb +241 -69
- data/lib/sidekiq/logger.rb +131 -0
- data/lib/sidekiq/manager.rb +88 -190
- data/lib/sidekiq/metrics/query.rb +155 -0
- data/lib/sidekiq/metrics/shared.rb +95 -0
- data/lib/sidekiq/metrics/tracking.rb +136 -0
- data/lib/sidekiq/middleware/chain.rb +114 -56
- data/lib/sidekiq/middleware/current_attributes.rb +95 -0
- data/lib/sidekiq/middleware/i18n.rb +8 -7
- data/lib/sidekiq/middleware/modules.rb +21 -0
- data/lib/sidekiq/monitor.rb +146 -0
- data/lib/sidekiq/paginator.rb +29 -16
- data/lib/sidekiq/processor.rb +238 -118
- data/lib/sidekiq/rails.rb +57 -27
- data/lib/sidekiq/redis_client_adapter.rb +111 -0
- data/lib/sidekiq/redis_connection.rb +49 -50
- data/lib/sidekiq/ring_buffer.rb +29 -0
- data/lib/sidekiq/scheduled.rb +173 -52
- data/lib/sidekiq/sd_notify.rb +149 -0
- data/lib/sidekiq/systemd.rb +24 -0
- data/lib/sidekiq/testing/inline.rb +7 -5
- data/lib/sidekiq/testing.rb +197 -65
- data/lib/sidekiq/transaction_aware_client.rb +44 -0
- data/lib/sidekiq/version.rb +4 -1
- data/lib/sidekiq/web/action.rb +93 -0
- data/lib/sidekiq/web/application.rb +463 -0
- data/lib/sidekiq/web/csrf_protection.rb +180 -0
- data/lib/sidekiq/web/helpers.rb +364 -0
- data/lib/sidekiq/web/router.rb +104 -0
- data/lib/sidekiq/web.rb +113 -216
- data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
- data/lib/sidekiq.rb +99 -142
- data/sidekiq.gemspec +26 -23
- data/web/assets/images/apple-touch-icon.png +0 -0
- data/web/assets/javascripts/application.js +163 -74
- data/web/assets/javascripts/base-charts.js +106 -0
- data/web/assets/javascripts/chart.min.js +13 -0
- data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
- data/web/assets/javascripts/dashboard-charts.js +182 -0
- data/web/assets/javascripts/dashboard.js +37 -280
- data/web/assets/javascripts/metrics.js +298 -0
- data/web/assets/stylesheets/application-dark.css +147 -0
- data/web/assets/stylesheets/application-rtl.css +153 -0
- data/web/assets/stylesheets/application.css +181 -198
- data/web/assets/stylesheets/bootstrap-rtl.min.css +9 -0
- data/web/assets/stylesheets/bootstrap.css +4 -8
- data/web/locales/ar.yml +87 -0
- data/web/locales/cs.yml +62 -52
- data/web/locales/da.yml +60 -53
- data/web/locales/de.yml +65 -53
- data/web/locales/el.yml +43 -24
- data/web/locales/en.yml +86 -62
- data/web/locales/es.yml +70 -53
- data/web/locales/fa.yml +80 -0
- data/web/locales/fr.yml +86 -56
- data/web/locales/gd.yml +99 -0
- data/web/locales/he.yml +80 -0
- data/web/locales/hi.yml +59 -59
- data/web/locales/it.yml +53 -53
- data/web/locales/ja.yml +78 -56
- data/web/locales/ko.yml +52 -52
- data/web/locales/lt.yml +83 -0
- data/web/locales/nb.yml +61 -61
- data/web/locales/nl.yml +52 -52
- data/web/locales/pl.yml +45 -45
- data/web/locales/pt-br.yml +83 -55
- data/web/locales/pt.yml +51 -51
- data/web/locales/ru.yml +68 -60
- data/web/locales/sv.yml +53 -53
- data/web/locales/ta.yml +60 -60
- data/web/locales/uk.yml +62 -61
- data/web/locales/ur.yml +80 -0
- data/web/locales/vi.yml +83 -0
- data/web/locales/zh-cn.yml +43 -16
- data/web/locales/zh-tw.yml +42 -8
- data/web/views/_footer.erb +10 -9
- data/web/views/_job_info.erb +26 -5
- data/web/views/_metrics_period_select.erb +12 -0
- data/web/views/_nav.erb +6 -20
- data/web/views/_paging.erb +3 -1
- data/web/views/_poll_link.erb +3 -6
- data/web/views/_summary.erb +7 -7
- data/web/views/busy.erb +87 -28
- data/web/views/dashboard.erb +51 -21
- data/web/views/dead.erb +4 -4
- data/web/views/filtering.erb +7 -0
- data/web/views/layout.erb +15 -5
- data/web/views/metrics.erb +91 -0
- data/web/views/metrics_for_job.erb +59 -0
- data/web/views/morgue.erb +25 -22
- data/web/views/queue.erb +35 -25
- data/web/views/queues.erb +23 -7
- data/web/views/retries.erb +28 -23
- data/web/views/retry.erb +5 -5
- data/web/views/scheduled.erb +19 -17
- data/web/views/scheduled_job_info.erb +1 -1
- metadata +86 -268
- data/.gitignore +0 -12
- data/.travis.yml +0 -16
- data/3.0-Upgrade.md +0 -70
- data/COMM-LICENSE +0 -95
- data/Contributing.md +0 -32
- data/Ent-Changes.md +0 -39
- data/Gemfile +0 -27
- data/LICENSE +0 -9
- data/Pro-2.0-Upgrade.md +0 -138
- data/Pro-Changes.md +0 -454
- data/Rakefile +0 -9
- data/bin/sidekiqctl +0 -93
- data/lib/generators/sidekiq/templates/worker_spec.rb.erb +0 -6
- data/lib/generators/sidekiq/templates/worker_test.rb.erb +0 -8
- data/lib/generators/sidekiq/worker_generator.rb +0 -49
- data/lib/sidekiq/actor.rb +0 -39
- data/lib/sidekiq/core_ext.rb +0 -105
- data/lib/sidekiq/exception_handler.rb +0 -30
- data/lib/sidekiq/extensions/action_mailer.rb +0 -56
- data/lib/sidekiq/extensions/active_record.rb +0 -39
- data/lib/sidekiq/extensions/class_methods.rb +0 -39
- data/lib/sidekiq/extensions/generic_proxy.rb +0 -24
- data/lib/sidekiq/logging.rb +0 -104
- data/lib/sidekiq/middleware/server/active_record.rb +0 -13
- data/lib/sidekiq/middleware/server/logging.rb +0 -40
- data/lib/sidekiq/middleware/server/retry_jobs.rb +0 -206
- data/lib/sidekiq/util.rb +0 -68
- data/lib/sidekiq/web_helpers.rb +0 -249
- data/lib/sidekiq/worker.rb +0 -103
- data/test/config.yml +0 -9
- data/test/env_based_config.yml +0 -11
- data/test/fake_env.rb +0 -0
- data/test/fixtures/en.yml +0 -2
- data/test/helper.rb +0 -49
- data/test/test_api.rb +0 -493
- data/test/test_cli.rb +0 -335
- data/test/test_client.rb +0 -194
- data/test/test_exception_handler.rb +0 -55
- data/test/test_extensions.rb +0 -126
- data/test/test_fetch.rb +0 -104
- data/test/test_logging.rb +0 -34
- data/test/test_manager.rb +0 -168
- data/test/test_middleware.rb +0 -159
- data/test/test_processor.rb +0 -237
- data/test/test_rails.rb +0 -21
- data/test/test_redis_connection.rb +0 -126
- data/test/test_retry.rb +0 -325
- data/test/test_scheduled.rb +0 -114
- data/test/test_scheduling.rb +0 -49
- data/test/test_sidekiq.rb +0 -99
- data/test/test_testing.rb +0 -142
- data/test/test_testing_fake.rb +0 -268
- data/test/test_testing_inline.rb +0 -93
- data/test/test_util.rb +0 -16
- data/test/test_web.rb +0 -608
- data/test/test_web_helpers.rb +0 -53
- data/web/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
- data/web/assets/images/bootstrap/glyphicons-halflings.png +0 -0
- data/web/assets/images/status/active.png +0 -0
- data/web/assets/images/status/idle.png +0 -0
- data/web/assets/javascripts/locales/README.md +0 -27
- data/web/assets/javascripts/locales/jquery.timeago.ar.js +0 -96
- data/web/assets/javascripts/locales/jquery.timeago.bg.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.bs.js +0 -49
- data/web/assets/javascripts/locales/jquery.timeago.ca.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.cs.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.cy.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.da.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.de.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.el.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.en-short.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.en.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.es.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.et.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.fa.js +0 -22
- data/web/assets/javascripts/locales/jquery.timeago.fi.js +0 -28
- data/web/assets/javascripts/locales/jquery.timeago.fr-short.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.fr.js +0 -17
- data/web/assets/javascripts/locales/jquery.timeago.he.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.hr.js +0 -49
- data/web/assets/javascripts/locales/jquery.timeago.hu.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.hy.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.id.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.it.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.ja.js +0 -19
- data/web/assets/javascripts/locales/jquery.timeago.ko.js +0 -17
- data/web/assets/javascripts/locales/jquery.timeago.lt.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.mk.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.nl.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.no.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.pl.js +0 -31
- data/web/assets/javascripts/locales/jquery.timeago.pt-br.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.pt.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.ro.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.rs.js +0 -49
- data/web/assets/javascripts/locales/jquery.timeago.ru.js +0 -34
- data/web/assets/javascripts/locales/jquery.timeago.sk.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.sl.js +0 -44
- data/web/assets/javascripts/locales/jquery.timeago.sv.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.th.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.tr.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.uk.js +0 -34
- data/web/assets/javascripts/locales/jquery.timeago.uz.js +0 -19
- data/web/assets/javascripts/locales/jquery.timeago.zh-cn.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.zh-tw.js +0 -20
- data/web/views/_poll_js.erb +0 -5
- /data/web/assets/images/{status-sd8051fd480.png → status.png} +0 -0
data/lib/sidekiq.rb
CHANGED
|
@@ -1,190 +1,147 @@
|
|
|
1
|
-
#
|
|
2
|
-
require 'sidekiq/version'
|
|
3
|
-
fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby 1.9." if RUBY_PLATFORM != 'java' && RUBY_VERSION < '2.0.0'
|
|
1
|
+
# frozen_string_literal: true
|
|
4
2
|
|
|
5
|
-
require
|
|
6
|
-
|
|
7
|
-
require 'sidekiq/worker'
|
|
8
|
-
require 'sidekiq/redis_connection'
|
|
3
|
+
require "sidekiq/version"
|
|
4
|
+
fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby versions below 2.7.0." if RUBY_PLATFORM != "java" && Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.7.0")
|
|
9
5
|
|
|
10
|
-
|
|
6
|
+
begin
|
|
7
|
+
require "sidekiq-ent/version"
|
|
8
|
+
fail <<~EOM if Gem::Version.new(Sidekiq::Enterprise::VERSION).segments[0] != Sidekiq::MAJOR
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
DEFAULTS = {
|
|
17
|
-
queues: [],
|
|
18
|
-
labels: [],
|
|
19
|
-
concurrency: 25,
|
|
20
|
-
require: '.',
|
|
21
|
-
environment: nil,
|
|
22
|
-
timeout: 8,
|
|
23
|
-
poll_interval_average: nil,
|
|
24
|
-
average_scheduled_poll_interval: 15,
|
|
25
|
-
error_handlers: [],
|
|
26
|
-
lifecycle_events: {
|
|
27
|
-
startup: [],
|
|
28
|
-
quiet: [],
|
|
29
|
-
shutdown: [],
|
|
30
|
-
},
|
|
31
|
-
dead_max_jobs: 10_000,
|
|
32
|
-
dead_timeout_in_seconds: 180 * 24 * 60 * 60 # 6 months
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
DEFAULT_WORKER_OPTIONS = {
|
|
36
|
-
'retry' => true,
|
|
37
|
-
'queue' => 'default'
|
|
38
|
-
}
|
|
10
|
+
Sidekiq Enterprise #{Sidekiq::Enterprise::VERSION} does not work with Sidekiq #{Sidekiq::VERSION}.
|
|
11
|
+
Starting with Sidekiq 7, major versions are synchronized so Sidekiq Enterprise 7 works with Sidekiq 7.
|
|
12
|
+
Use `bundle up sidekiq-ent` to upgrade.
|
|
39
13
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
14
|
+
EOM
|
|
15
|
+
rescue LoadError
|
|
16
|
+
end
|
|
43
17
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
18
|
+
begin
|
|
19
|
+
require "sidekiq/pro/version"
|
|
20
|
+
fail <<~EOM if Gem::Version.new(Sidekiq::Pro::VERSION).segments[0] != Sidekiq::MAJOR
|
|
47
21
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
22
|
+
Sidekiq Pro #{Sidekiq::Pro::VERSION} does not work with Sidekiq #{Sidekiq::VERSION}.
|
|
23
|
+
Starting with Sidekiq 7, major versions are synchronized so Sidekiq Pro 7 works with Sidekiq 7.
|
|
24
|
+
Use `bundle up sidekiq-pro` to upgrade.
|
|
51
25
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
# Sidekiq.configure_server do |config|
|
|
56
|
-
# config.redis = { :namespace => 'myapp', :size => 25, :url => 'redis://myhost:8877/0' }
|
|
57
|
-
# config.server_middleware do |chain|
|
|
58
|
-
# chain.add MyServerHook
|
|
59
|
-
# end
|
|
60
|
-
# end
|
|
61
|
-
def self.configure_server
|
|
62
|
-
yield self if server?
|
|
63
|
-
end
|
|
26
|
+
EOM
|
|
27
|
+
rescue LoadError
|
|
28
|
+
end
|
|
64
29
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
30
|
+
require "sidekiq/config"
|
|
31
|
+
require "sidekiq/logger"
|
|
32
|
+
require "sidekiq/client"
|
|
33
|
+
require "sidekiq/transaction_aware_client"
|
|
34
|
+
require "sidekiq/job"
|
|
35
|
+
require "sidekiq/worker_compatibility_alias"
|
|
36
|
+
require "sidekiq/redis_client_adapter"
|
|
37
|
+
|
|
38
|
+
require "json"
|
|
39
|
+
|
|
40
|
+
module Sidekiq
|
|
41
|
+
NAME = "Sidekiq"
|
|
42
|
+
LICENSE = "See LICENSE and the LGPL-3.0 for licensing details."
|
|
43
|
+
|
|
44
|
+
def self.❨╯°□°❩╯︵┻━┻
|
|
45
|
+
puts "Take a deep breath and count to ten..."
|
|
73
46
|
end
|
|
74
47
|
|
|
75
48
|
def self.server?
|
|
76
49
|
defined?(Sidekiq::CLI)
|
|
77
50
|
end
|
|
78
51
|
|
|
79
|
-
def self.
|
|
80
|
-
|
|
81
|
-
redis_pool.with do |conn|
|
|
82
|
-
retryable = true
|
|
83
|
-
begin
|
|
84
|
-
yield conn
|
|
85
|
-
rescue Redis::CommandError => ex
|
|
86
|
-
#2550 Failover can cause the server to become a slave, need
|
|
87
|
-
# to disconnect and reopen the socket to get back to the master.
|
|
88
|
-
(conn.disconnect!; retryable = false; retry) if retryable && ex.message =~ /READONLY/
|
|
89
|
-
raise
|
|
90
|
-
end
|
|
91
|
-
end
|
|
52
|
+
def self.load_json(string)
|
|
53
|
+
JSON.parse(string)
|
|
92
54
|
end
|
|
93
55
|
|
|
94
|
-
def self.
|
|
95
|
-
|
|
56
|
+
def self.dump_json(object)
|
|
57
|
+
JSON.generate(object)
|
|
96
58
|
end
|
|
97
59
|
|
|
98
|
-
def self.
|
|
99
|
-
|
|
100
|
-
hash
|
|
101
|
-
else
|
|
102
|
-
Sidekiq::RedisConnection.create(hash)
|
|
103
|
-
end
|
|
60
|
+
def self.pro?
|
|
61
|
+
defined?(Sidekiq::Pro)
|
|
104
62
|
end
|
|
105
63
|
|
|
106
|
-
def self.
|
|
107
|
-
|
|
108
|
-
yield @client_chain if block_given?
|
|
109
|
-
@client_chain
|
|
64
|
+
def self.ent?
|
|
65
|
+
defined?(Sidekiq::Enterprise)
|
|
110
66
|
end
|
|
111
67
|
|
|
112
|
-
def self.
|
|
113
|
-
|
|
114
|
-
yield @server_chain if block_given?
|
|
115
|
-
@server_chain
|
|
68
|
+
def self.redis_pool
|
|
69
|
+
(Thread.current[:sidekiq_capsule] || default_configuration).redis_pool
|
|
116
70
|
end
|
|
117
71
|
|
|
118
|
-
def self.
|
|
119
|
-
|
|
72
|
+
def self.redis(&block)
|
|
73
|
+
(Thread.current[:sidekiq_capsule] || default_configuration).redis(&block)
|
|
120
74
|
end
|
|
121
75
|
|
|
122
|
-
def self.
|
|
123
|
-
|
|
76
|
+
def self.strict_args!(mode = :raise)
|
|
77
|
+
Sidekiq::Config::DEFAULTS[:on_complex_arguments] = mode
|
|
124
78
|
end
|
|
125
79
|
|
|
126
|
-
def self.
|
|
127
|
-
|
|
80
|
+
def self.default_job_options=(hash)
|
|
81
|
+
@default_job_options = default_job_options.merge(hash.transform_keys(&:to_s))
|
|
128
82
|
end
|
|
129
83
|
|
|
130
|
-
def self.
|
|
131
|
-
|
|
84
|
+
def self.default_job_options
|
|
85
|
+
@default_job_options ||= {"retry" => true, "queue" => "default"}
|
|
132
86
|
end
|
|
133
87
|
|
|
134
|
-
def self.
|
|
135
|
-
Sidekiq::
|
|
88
|
+
def self.default_configuration
|
|
89
|
+
@config ||= Sidekiq::Config.new
|
|
136
90
|
end
|
|
137
91
|
|
|
138
|
-
def self.logger
|
|
139
|
-
|
|
92
|
+
def self.logger
|
|
93
|
+
default_configuration.logger
|
|
140
94
|
end
|
|
141
95
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
#
|
|
146
|
-
# See sidekiq/scheduled.rb for an in-depth explanation of this value
|
|
147
|
-
def self.poll_interval=(interval)
|
|
148
|
-
$stderr.puts "DEPRECATION: `config.poll_interval = #{interval}` will be removed in Sidekiq 4. Please update to `config.average_scheduled_poll_interval = #{interval}`."
|
|
149
|
-
self.options[:poll_interval_average] = interval
|
|
96
|
+
def self.configure_server(&block)
|
|
97
|
+
(@config_blocks ||= []) << block
|
|
98
|
+
yield default_configuration if server?
|
|
150
99
|
end
|
|
151
100
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
#
|
|
156
|
-
# See sidekiq/scheduled.rb for an in-depth explanation of this value
|
|
157
|
-
def self.average_scheduled_poll_interval=(interval)
|
|
158
|
-
self.options[:average_scheduled_poll_interval] = interval
|
|
101
|
+
def self.freeze!
|
|
102
|
+
@frozen = true
|
|
103
|
+
@config_blocks = nil
|
|
159
104
|
end
|
|
160
105
|
|
|
161
|
-
#
|
|
106
|
+
# Creates a Sidekiq::Config instance that is more tuned for embedding
|
|
107
|
+
# within an arbitrary Ruby process. Notably it reduces concurrency by
|
|
108
|
+
# default so there is less contention for CPU time with other threads.
|
|
162
109
|
#
|
|
163
|
-
# Sidekiq.
|
|
164
|
-
# config.
|
|
110
|
+
# inst = Sidekiq.configure_embed do |config|
|
|
111
|
+
# config.queues = %w[critical default low]
|
|
165
112
|
# end
|
|
113
|
+
# inst.run
|
|
114
|
+
# sleep 10
|
|
115
|
+
# inst.terminate
|
|
116
|
+
#
|
|
117
|
+
# NB: it is really easy to overload a Ruby process with threads due to the GIL.
|
|
118
|
+
# I do not recommend setting concurrency higher than 2-3.
|
|
166
119
|
#
|
|
167
|
-
#
|
|
168
|
-
|
|
169
|
-
|
|
120
|
+
# NB: Sidekiq only supports one instance in memory. You will get undefined behavior
|
|
121
|
+
# if you try to embed Sidekiq twice in the same process.
|
|
122
|
+
def self.configure_embed(&block)
|
|
123
|
+
raise "Sidekiq global configuration is frozen, you must create all embedded instances BEFORE calling `run`" if @frozen
|
|
124
|
+
|
|
125
|
+
require "sidekiq/embedded"
|
|
126
|
+
cfg = default_configuration
|
|
127
|
+
cfg.concurrency = 2
|
|
128
|
+
@config_blocks&.each { |block| block.call(cfg) }
|
|
129
|
+
yield cfg
|
|
130
|
+
|
|
131
|
+
Sidekiq::Embedded.new(cfg)
|
|
170
132
|
end
|
|
171
133
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
#
|
|
175
|
-
# Sidekiq.configure_server do |config|
|
|
176
|
-
# config.on(:shutdown) do
|
|
177
|
-
# puts "Goodbye cruel world!"
|
|
178
|
-
# end
|
|
179
|
-
# end
|
|
180
|
-
def self.on(event, &block)
|
|
181
|
-
raise ArgumentError, "Symbols only please: #{event}" unless event.is_a?(Symbol)
|
|
182
|
-
raise ArgumentError, "Invalid event name: #{event}" unless options[:lifecycle_events].key?(event)
|
|
183
|
-
options[:lifecycle_events][event] << block
|
|
134
|
+
def self.configure_client
|
|
135
|
+
yield default_configuration unless server?
|
|
184
136
|
end
|
|
137
|
+
|
|
138
|
+
# We are shutting down Sidekiq but what about threads that
|
|
139
|
+
# are working on some long job? This error is
|
|
140
|
+
# raised in jobs that have not finished within the hard
|
|
141
|
+
# timeout limit. This is needed to rollback db transactions,
|
|
142
|
+
# otherwise Ruby's Thread#kill will commit. See #377.
|
|
143
|
+
# DO NOT RESCUE THIS ERROR IN YOUR JOBS
|
|
144
|
+
class Shutdown < Interrupt; end
|
|
185
145
|
end
|
|
186
146
|
|
|
187
|
-
require
|
|
188
|
-
require 'sidekiq/extensions/action_mailer'
|
|
189
|
-
require 'sidekiq/extensions/active_record'
|
|
190
|
-
require 'sidekiq/rails' if defined?(::Rails::Engine)
|
|
147
|
+
require "sidekiq/rails" if defined?(::Rails::Engine)
|
data/sidekiq.gemspec
CHANGED
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
require File.expand_path('../lib/sidekiq/version', __FILE__)
|
|
1
|
+
require_relative "lib/sidekiq/version"
|
|
3
2
|
|
|
4
3
|
Gem::Specification.new do |gem|
|
|
5
|
-
gem.authors
|
|
6
|
-
gem.email
|
|
7
|
-
gem.summary
|
|
8
|
-
gem.description
|
|
9
|
-
gem.homepage
|
|
10
|
-
gem.license
|
|
4
|
+
gem.authors = ["Mike Perham"]
|
|
5
|
+
gem.email = ["info@contribsys.com"]
|
|
6
|
+
gem.summary = "Simple, efficient background processing for Ruby"
|
|
7
|
+
gem.description = "Simple, efficient background processing for Ruby."
|
|
8
|
+
gem.homepage = "https://sidekiq.org"
|
|
9
|
+
gem.license = "LGPL-3.0"
|
|
11
10
|
|
|
12
|
-
gem.executables
|
|
13
|
-
gem.files
|
|
14
|
-
gem.
|
|
15
|
-
gem.
|
|
16
|
-
gem.
|
|
17
|
-
|
|
18
|
-
gem.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
11
|
+
gem.executables = ["sidekiq", "sidekiqmon"]
|
|
12
|
+
gem.files = %w[sidekiq.gemspec README.md Changes.md LICENSE.txt] + `git ls-files | grep -E '^(bin|lib|web)'`.split("\n")
|
|
13
|
+
gem.name = "sidekiq"
|
|
14
|
+
gem.version = Sidekiq::VERSION
|
|
15
|
+
gem.required_ruby_version = ">= 2.7.0"
|
|
16
|
+
|
|
17
|
+
gem.metadata = {
|
|
18
|
+
"homepage_uri" => "https://sidekiq.org",
|
|
19
|
+
"bug_tracker_uri" => "https://github.com/sidekiq/sidekiq/issues",
|
|
20
|
+
"documentation_uri" => "https://github.com/sidekiq/sidekiq/wiki",
|
|
21
|
+
"changelog_uri" => "https://github.com/sidekiq/sidekiq/blob/main/Changes.md",
|
|
22
|
+
"source_code_uri" => "https://github.com/sidekiq/sidekiq",
|
|
23
|
+
"rubygems_mfa_required" => "true"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
gem.add_dependency "redis-client", ">= 0.14.0"
|
|
27
|
+
gem.add_dependency "connection_pool", ">= 2.3.0"
|
|
28
|
+
gem.add_dependency "rack", ">= 2.2.4"
|
|
29
|
+
gem.add_dependency "concurrent-ruby", "< 2"
|
|
27
30
|
end
|
|
Binary file
|