Module: Sidekiq
- Defined in:
- lib/sidekiq/api.rb,
lib/sidekiq.rb,
lib/sidekiq/cli.rb,
lib/sidekiq/job.rb,
lib/sidekiq/web.rb,
lib/sidekiq/fetch.rb,
lib/sidekiq/rails.rb,
lib/sidekiq/client.rb,
lib/sidekiq/config.rb,
lib/sidekiq/deploy.rb,
lib/sidekiq/logger.rb,
lib/sidekiq/capsule.rb,
lib/sidekiq/manager.rb,
lib/sidekiq/systemd.rb,
lib/sidekiq/testing.rb,
lib/sidekiq/version.rb,
lib/sidekiq/embedded.rb,
lib/sidekiq/job_util.rb,
lib/sidekiq/launcher.rb,
lib/sidekiq/component.rb,
lib/sidekiq/job_retry.rb,
lib/sidekiq/paginator.rb,
lib/sidekiq/processor.rb,
lib/sidekiq/scheduled.rb,
lib/sidekiq/sd_notify.rb,
lib/sidekiq/job_logger.rb,
lib/sidekiq/web/action.rb,
lib/sidekiq/web/router.rb,
lib/sidekiq/ring_buffer.rb,
lib/sidekiq/web/helpers.rb,
lib/sidekiq/metrics/query.rb,
lib/sidekiq/metrics/shared.rb,
lib/sidekiq/web/application.rb,
lib/sidekiq/metrics/tracking.rb,
lib/sidekiq/middleware/chain.rb,
lib/sidekiq/redis_connection.rb,
lib/sidekiq/middleware/modules.rb,
lib/sidekiq/web/csrf_protection.rb,
lib/sidekiq/redis_client_adapter.rb,
lib/generators/sidekiq/job_generator.rb,
lib/sidekiq/transaction_aware_client.rb,
lib/sidekiq/transaction_aware_client.rb,
lib/sidekiq/worker_compatibility_alias.rb,
lib/sidekiq/middleware/current_attributes.rb
Overview
Use ‘Sidekiq.transactional_push!` in your sidekiq.rb initializer
Defined Under Namespace
Modules: Component, Context, CurrentAttributes, Generators, Job, JobUtil, LoggingUtils, Metrics, Middleware, Paginator, Queues, RedisConnection, Scheduled, SdNotify, ServerMiddleware, TestingClient, TestingExtensions, WebHelpers, WebRouter
Classes: BasicFetch, CLI, Capsule, Client, Config, DeadSet, Deploy, Embedded, EmptyQueueError, JobLogger, JobRecord, JobRetry, JobSet, Launcher, Logger, Manager, Monitor, Process, ProcessSet, Processor, Queue, Rails, RedisClientAdapter, RetrySet, RingBuffer, ScheduledSet, Shutdown, SortedEntry, SortedSet, Stats, Testing, TransactionAwareClient, Web, WebAction, WebApplication, WebRoute, Work, WorkSet
Constant Summary
collapse
- NAME =
"Sidekiq"
- LICENSE =
"See LICENSE and the LGPL-3.0 for licensing details."
- Workers =
Since “worker” is a nebulous term, we’ve deprecated the use of this class name. Is “worker” a process, a type of job, a thread? Undefined! WorkSet better describes the data.
WorkSet
- VERSION =
"7.2.2"
- MAJOR =
7
- ClientMiddleware =
ServerMiddleware
- Worker =
Sidekiq::Job is a new alias for Sidekiq::Worker as of Sidekiq 6.3.0. Use ‘include Sidekiq::Job` rather than `include Sidekiq::Worker`.
The term “worker” is too generic and overly confusing, used in several different contexts meaning different things. Many people call a Sidekiq process a “worker”. Some people call the thread that executes jobs a “worker”. This change brings Sidekiq closer to ActiveJob where your job classes extend ApplicationJob.
Job
Class Method Summary
collapse
Class Method Details
134
135
136
|
# File 'lib/sidekiq.rb', line 134
def self.configure_client
yield default_configuration unless server?
end
|
Creates a Sidekiq::Config instance that is more tuned for embedding within an arbitrary Ruby process. Notably it reduces concurrency by default so there is less contention for CPU time with other threads.
inst = Sidekiq.configure_embed do |config|
config.queues = %w[critical default low]
end
inst.run
sleep 10
inst.terminate
NB: it is really easy to overload a Ruby process with threads due to the GIL. I do not recommend setting concurrency higher than 2-3.
NB: Sidekiq only supports one instance in memory. You will get undefined behavior if you try to embed Sidekiq twice in the same process.
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/sidekiq.rb', line 122
def self.configure_embed(&block)
raise "Sidekiq global configuration is frozen, you must create all embedded instances BEFORE calling `run`" if @frozen
require "sidekiq/embedded"
cfg = default_configuration
cfg.concurrency = 2
@config_blocks&.each { |block| block.call(cfg) }
yield cfg
Sidekiq::Embedded.new(cfg)
end
|
96
97
98
99
|
# File 'lib/sidekiq.rb', line 96
def self.configure_server(&block)
(@config_blocks ||= []) << block
yield default_configuration if server?
end
|
.default_configuration ⇒ Object
88
89
90
|
# File 'lib/sidekiq.rb', line 88
def self.default_configuration
@config ||= Sidekiq::Config.new
end
|
.default_job_options ⇒ Object
84
85
86
|
# File 'lib/sidekiq.rb', line 84
def self.default_job_options
@default_job_options ||= {"retry" => true, "queue" => "default"}
end
|
.default_job_options=(hash) ⇒ Object
80
81
82
|
# File 'lib/sidekiq.rb', line 80
def self.default_job_options=(hash)
@default_job_options = default_job_options.merge(hash.transform_keys(&:to_s))
end
|
.dump_json(object) ⇒ Object
56
57
58
|
# File 'lib/sidekiq.rb', line 56
def self.dump_json(object)
JSON.generate(object)
end
|
.ent? ⇒ Boolean
64
65
66
|
# File 'lib/sidekiq.rb', line 64
def self.ent?
defined?(Sidekiq::Enterprise)
end
|
.freeze! ⇒ Object
101
102
103
104
|
# File 'lib/sidekiq.rb', line 101
def self.freeze!
@frozen = true
@config_blocks = nil
end
|
.load_json(string) ⇒ Object
52
53
54
|
# File 'lib/sidekiq.rb', line 52
def self.load_json(string)
JSON.parse(string)
end
|
.logger ⇒ Object
92
93
94
|
# File 'lib/sidekiq.rb', line 92
def self.logger
default_configuration.logger
end
|
.pro? ⇒ Boolean
60
61
62
|
# File 'lib/sidekiq.rb', line 60
def self.pro?
defined?(Sidekiq::Pro)
end
|
.redis(&block) ⇒ Object
72
73
74
|
# File 'lib/sidekiq.rb', line 72
def self.redis(&block)
(Thread.current[:sidekiq_capsule] || default_configuration).redis(&block)
end
|
.redis_pool ⇒ Object
68
69
70
|
# File 'lib/sidekiq.rb', line 68
def self.redis_pool
(Thread.current[:sidekiq_capsule] || default_configuration).redis_pool
end
|
.server? ⇒ Boolean
48
49
50
|
# File 'lib/sidekiq.rb', line 48
def self.server?
defined?(Sidekiq::CLI)
end
|
.start_watchdog ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/sidekiq/systemd.rb', line 8
def self.start_watchdog
usec = Integer(ENV["WATCHDOG_USEC"])
return Sidekiq.logger.error("systemd Watchdog too fast: " + usec) if usec < 1_000_000
sec_f = usec / 1_000_000.0
ping_f = sec_f / 2
Sidekiq.logger.info "Pinging systemd watchdog every #{ping_f.round(1)} sec"
Thread.new do
loop do
sleep ping_f
Sidekiq::SdNotify.watchdog
end
end
end
|
.strict_args!(mode = :raise) ⇒ Object
76
77
78
|
# File 'lib/sidekiq.rb', line 76
def self.strict_args!(mode = :raise)
Sidekiq::Config::DEFAULTS[:on_complex_arguments] = mode
end
|
.transactional_push! ⇒ Object
.❨╯°□°❩╯︵┻━┻ ⇒ Object
44
45
46
|
# File 'lib/sidekiq.rb', line 44
def self.❨╯°□°❩╯︵┻━┻
puts "Take a deep breath and count to ten..."
end
|