All sidekiq versions supported
This commit is contained in:
parent
e693dcf205
commit
5e49e989ee
|
@ -1,4 +1,5 @@
|
|||
require 'sidekiq'
|
||||
require 'sidekiq/fetch'
|
||||
require 'sidekiq/util'
|
||||
require 'sidekiq/api'
|
||||
require 'forwardable'
|
||||
|
@ -17,6 +18,13 @@ class Sidekiq::LimitFetch
|
|||
include Redis
|
||||
Sidekiq.options[:fetch] = self
|
||||
|
||||
TIMEOUT = \
|
||||
if Sidekiq::VERSION < '4.0.0'
|
||||
Sidekiq::Fetcher::TIMEOUT
|
||||
else
|
||||
Sidekiq::BasicFetch::TIMEOUT
|
||||
end
|
||||
|
||||
def self.bulk_requeue(*args)
|
||||
Sidekiq::BasicFetch.bulk_requeue *args
|
||||
end
|
||||
|
@ -34,7 +42,7 @@ class Sidekiq::LimitFetch
|
|||
private
|
||||
|
||||
def fetch_message
|
||||
queue, _ = redis_brpop *@queues.acquire, Sidekiq::BasicFetch::TIMEOUT
|
||||
queue, _ = redis_brpop *@queues.acquire, TIMEOUT
|
||||
ensure
|
||||
@queues.release_except queue
|
||||
end
|
||||
|
|
|
@ -3,7 +3,21 @@ module Sidekiq::LimitFetch::Redis
|
|||
|
||||
def nonblocking_redis
|
||||
redis do |redis|
|
||||
yield redis
|
||||
# Celluloid 0.16 broke this method + yield redis
|
||||
if Sidekiq::VERSION >= '4.0.0' || Celluloid::VERSION.to_f >= 0.16
|
||||
yield redis
|
||||
else
|
||||
# prevent blocking of fetcher
|
||||
# more bullet-proof and faster (O_O)
|
||||
# than using Celluloid::IO
|
||||
#
|
||||
# https://github.com/brainopia/sidekiq-limit_fetch/issues/41
|
||||
# explanation of why Future#value is beneficial here
|
||||
begin
|
||||
Celluloid::Future.new { yield redis }.value
|
||||
rescue Celluloid::Task::TerminatedError
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
|
|||
gem.test_files = gem.files.grep %r{^spec/}
|
||||
gem.require_paths = %w(lib)
|
||||
|
||||
gem.add_dependency 'sidekiq', '~> 4.0.0'
|
||||
gem.add_dependency 'sidekiq', '>= 2.6.5'
|
||||
gem.add_development_dependency 'rspec', '~> 3.2.0'
|
||||
gem.add_development_dependency 'rake'
|
||||
end
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
require 'sidekiq/limit_fetch'
|
||||
require 'sidekiq/version'
|
||||
require 'celluloid/autostart' if Sidekiq::VERSION < '4.0.0'
|
||||
require 'sidekiq/fetch'
|
||||
require 'sidekiq/limit_fetch'
|
||||
|
||||
Sidekiq.logger = nil
|
||||
Sidekiq.redis = { namespace: ENV['namespace'] }
|
||||
|
|
Loading…
Reference in New Issue