Redis-py udostępnia pulę połączeń, z której możesz pobrać połączenie. Pule połączeń tworzą zestaw połączeń, z których można korzystać w razie potrzeby (a po zakończeniu połączenie jest zwracane do puli połączeń w celu dalszego wykorzystania). Próba tworzenia połączeń w locie bez ich odrzucania (tzn. niekorzystanie z puli lub nieprawidłowe korzystanie z puli) sprawi, że będziesz mieć zbyt wiele połączeń do ponownego odtworzenia (do momentu osiągnięcia limitu połączeń).
Możesz wybrać ustawienie puli połączeń w metodzie init i uczynić pulę globalną (możesz spojrzeć na inne opcje, jeśli nie czujesz się komfortowo z globalną).
redis_pool = None
def init():
global redis_pool
print("PID %d: initializing redis pool..." % os.getpid())
redis_pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)
Następnie możesz odzyskać połączenie z puli w ten sposób:
redis_conn = redis.Redis(connection_pool=redis_pool)
Zakładam również, że używasz Hiredis razem z redis-py, ponieważ w niektórych przypadkach powinno to poprawić wydajność. Czy sprawdziłeś również liczbę otwartych połączeń z serwerem redis przy istniejącej konfiguracji, ponieważ najprawdopodobniej jest ona dość wysoka? Możesz użyć polecenia INFO, aby uzyskać te informacje:
redis-cli info
Sprawdź Klientów sekcja, w której zobaczysz „connected_clients " pole, które powie Ci, ile masz otwartych połączeń z serwerem redis w tej chwili.