Redis-py biedt u een connectiepool aan waaruit u een verbinding kunt ophalen. Verbindingspools maken een set verbindingen die u naar behoefte kunt gebruiken (en als u klaar bent, wordt de verbinding teruggestuurd naar de verbindingspool voor verder hergebruik). Proberen om on-the-fly verbindingen te maken zonder ze weg te gooien (d.w.z. een pool niet gebruiken of de pool niet correct gebruiken) zal je veel te veel verbindingen opleveren om opnieuw te maken (totdat je de verbindingslimiet bereikt).
U kunt ervoor kiezen om de verbindingspool in de init-methode in te stellen en de pool globaal te maken (u kunt naar andere opties kijken als u zich niet prettig voelt bij globaal).
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)
U kunt de verbinding dan als volgt uit een pool ophalen:
redis_conn = redis.Redis(connection_pool=redis_pool)
Ik ga er ook van uit dat je hireis samen met redis-py gebruikt, omdat dit in bepaalde gevallen de prestaties zou moeten verbeteren. Heb je met je bestaande setup ook het aantal open verbindingen naar de redis-server gecontroleerd, aangezien dit hoogstwaarschijnlijk vrij hoog is? U kunt het INFO-commando gebruiken om die informatie te krijgen:
redis-cli info
Controleer de Cliënten sectie waarin u de "connected_clients . ziet " veld dat u zal vertellen hoeveel verbindingen u op dat moment open heeft staan met de redis-server.