Redis-py tillhandahåller en anslutningspool för dig från vilken du kan hämta en anslutning. Anslutningspooler skapar en uppsättning anslutningar som du kan använda efter behov (och när det är klart - anslutningen returneras till anslutningspoolen för vidare återanvändning). Att försöka skapa anslutningar i farten utan att kassera dem (dvs. att inte använda en pool eller inte använda poolen korrekt) kommer att lämna dig med alldeles för många anslutningar för att göra om (tills du når anslutningsgränsen).
Du kan välja att ställa in anslutningspoolen i init-metoden och göra poolen global (du kan titta på andra alternativ om du är obekväm med 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)
Du kan sedan hämta anslutningen från en pool så här:
redis_conn = redis.Redis(connection_pool=redis_pool)
Jag antar också att du använder hirdis tillsammans med redis-py eftersom det borde förbättra prestandan i vissa fall. Har du också kontrollerat antalet öppna anslutningar till redis-servern med din befintliga setup eftersom det med största sannolikhet är ganska högt? Du kan använda INFO-kommandot för att få den informationen:
redis-cli info
Sök efter Kunder avsnittet där du kommer att se "anslutna_klienter "-fält som talar om hur många anslutningar du har öppna till redis-servern i det ögonblicket.