Redis-py vous fournit un pool de connexions à partir duquel vous pouvez récupérer une connexion. Les pools de connexions créent un ensemble de connexions que vous pouvez utiliser selon vos besoins (et une fois terminé, la connexion est renvoyée au pool de connexions pour une réutilisation ultérieure). Essayer de créer des connexions à la volée sans les supprimer (c'est-à-dire ne pas utiliser de pool ou ne pas utiliser correctement le pool) vous laissera beaucoup trop de connexions à redis (jusqu'à ce que vous atteigniez la limite de connexion).
Vous pouvez choisir de configurer le pool de connexions dans la méthode init et de rendre le pool global (vous pouvez consulter d'autres options si vous n'êtes pas à l'aise avec global).
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)
Vous pouvez ensuite récupérer la connexion à partir d'un pool comme ceci :
redis_conn = redis.Redis(connection_pool=redis_pool)
De plus, je suppose que vous utilisez embauchés avec redis-py car cela devrait améliorer les performances dans certains cas. Avez-vous également vérifié le nombre de connexions ouvertes au serveur Redis avec votre configuration existante, car il est probablement assez élevé ? Vous pouvez utiliser la commande INFO pour obtenir ces informations :
redis-cli info
Vérifiez les clients section dans laquelle vous verrez les "connected_clients " qui vous indiquera combien de connexions vous avez ouvertes au serveur Redis à cet instant.