diff --git a/environment.rb b/environment.rb index 729b69f1..10385a8f 100644 --- a/environment.rb +++ b/environment.rb @@ -51,7 +51,9 @@ Sidekiq.configure_client do |config| end if $config['pubsub_url'] - $pubsub = Redis.new url: $config['pubsub_url'] + $pubsub_pool = ConnectionPool.new(size: 10, timeout: 5) { + Redis.new url: $config['pubsub_url'] + } end if $config['pubsub_url'].nil? && ENV['RACK_ENV'] == 'production' diff --git a/workers/purge_cache_worker.rb b/workers/purge_cache_worker.rb index 5017bdbf..461c92a7 100644 --- a/workers/purge_cache_worker.rb +++ b/workers/purge_cache_worker.rb @@ -6,7 +6,9 @@ class PurgeCacheWorker attempt = 0 begin attempt += 1 - $pubsub.publish 'purgecache', payload.to_json + $pubsub_pool.with do |redis| + redis.publish 'purgecache', payload.to_json + end rescue Redis::BaseConnectionError => error raise if attempt > 3 puts "pubsub error: #{error}, retrying in 1s"