Explorar o código

Adds ability to set Redis backend connection_pool class/constructor

Ask Solem %!s(int64=11) %!d(string=hai) anos
pai
achega
0ed47324c4
Modificáronse 1 ficheiros con 11 adicións e 2 borrados
  1. 11 2
      celery/backends/redis.py

+ 11 - 2
celery/backends/redis.py

@@ -55,7 +55,8 @@ class RedisBackend(KeyValueStoreBackend):
     implements_incr = True
 
     def __init__(self, host=None, port=None, db=None, password=None,
-                 expires=None, max_connections=None, url=None, **kwargs):
+                 expires=None, max_connections=None, url=None,
+                 connection_pool=None, **kwargs):
         super(RedisBackend, self).__init__(**kwargs)
         conf = self.app.conf
         if self.redis is None:
@@ -75,6 +76,7 @@ class RedisBackend(KeyValueStoreBackend):
         self.max_connections = (
             max_connections or _get('MAX_CONNECTIONS') or self.max_connections
         )
+        self._ConnectionPool = connection_pool
 
         self.connparams = {
             'host': _get('HOST') or 'localhost',
@@ -162,10 +164,17 @@ class RedisBackend(KeyValueStoreBackend):
     def expire(self, key, value):
         return self.client.expire(key, value)
 
+    @property
+    def ConnectionPool(self):
+        if self._ConnectionPool is None:
+            self._ConnectionPool = self.redis.ConnectionPool
+        return self._ConnectionPool
+
     @cached_property
     def client(self):
         return self.redis.Redis(
-            connection_pool=self.redis.ConnectionPool(**self.connparams))
+            connection_pool=self.ConnectionPool(**self.connparams),
+        )
 
     def __reduce__(self, args=(), kwargs={}):
         return super(RedisBackend, self).__reduce__(