Module: Qless

Defined in:
lib/qless.rb,
lib/qless.rb,
lib/qless/job.rb,
lib/qless/queue.rb,
lib/qless/config.rb,
lib/qless/server.rb,
lib/qless/version.rb,
lib/qless/lua_script.rb,
lib/qless/subscriber.rb,
lib/qless/worker/base.rb,
lib/qless/worker/serial.rb,
lib/qless/worker/forking.rb,
lib/qless/failure_formatter.rb,
lib/qless/middleware/sentry.rb,
lib/qless/middleware/metriks.rb,
lib/qless/middleware/timeout.rb,
lib/qless/job_reservers/ordered.rb,
lib/qless/job_reservers/round_robin.rb,
lib/qless/middleware/redis_reconnect.rb,
lib/qless/middleware/retry_exceptions.rb,
lib/qless/test_helpers/worker_helpers.rb,
lib/qless/middleware/requeue_exceptions.rb,
lib/qless/middleware/memory_usage_monitor.rb,
lib/qless/job_reservers/shuffled_round_robin.rb

Overview

The top level container for all things qless

Defined Under Namespace

Modules: JobReservers, Middleware, RetryExceptions, WorkerHelpers, Workers Classes: BaseJob, Client, ClientEvents, ClientJobs, ClientQueues, ClientWorkers, Config, FailureFormatter, Job, LuaPlugin, LuaScript, Queue, QueueJobs, RecurringJob, Server, Subscriber

Constant Summary collapse

Error =

Define our error base class before requiring the other files so they can define subclasses.

Class.new(StandardError)
USING_LEGACY_REDIS_VERSION =

to maintain backwards compatibility with v2.x of that gem we need this constant because:

  • (lua.rb) the #evalsha method signature changed between v2.x and v3.x of the redis ruby gem

  • (worker.rb) in v3.x you have to reconnect to the redis server after forking the process

::Redis::VERSION.to_f < 3.0
UnsupportedRedisVersionError =
Class.new(Error)
VERSION =
'0.12.0'
LuaScriptError =
Class.new(Qless::Error)
JobTimedoutError =

Unique error class used when a job is timed out by this middleware. Allows us to differentiate this timeout from others caused by ‘::Timeout::Error`

Class.new(StandardError)
InvalidTimeoutError =
Class.new(ArgumentError)

Class Method Summary collapse

Class Method Details

.failure_formatterObject



44
45
46
# File 'lib/qless.rb', line 44

def failure_formatter
  @failure_formatter ||= FailureFormatter.new
end

.generate_jidObject



34
35
36
# File 'lib/qless.rb', line 34

def generate_jid
  SecureRandom.uuid.gsub('-', '')
end

.stringify_hash_keys(hash) ⇒ Object



38
39
40
41
42
# File 'lib/qless.rb', line 38

def stringify_hash_keys(hash)
  hash.each_with_object({}) do |(key, value), result|
    result[key.to_s] = value
  end
end