Redis-py giver dig en forbindelsespulje, hvorfra du kan hente en forbindelse. Forbindelsespuljer opretter et sæt forbindelser, som du kan bruge efter behov (og når det er gjort - returneres forbindelsen til forbindelsespuljen til yderligere genbrug). Hvis du prøver at oprette forbindelser på farten uden at kassere dem (dvs. ikke bruge en pool eller ikke bruge poolen korrekt), vil du have alt for mange forbindelser til at genoprette (indtil du når forbindelsesgrænsen).
Du kan vælge at konfigurere forbindelsespuljen i init-metoden og gøre puljen global (du kan se på andre muligheder, hvis du er ubehagelig 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 derefter hente forbindelsen fra en pulje som denne:
redis_conn = redis.Redis(connection_pool=redis_pool)
Jeg antager også, at du bruger hirdis sammen med redis-py, da det burde forbedre ydeevnen i visse tilfælde. Har du også tjekket antallet af åbne forbindelser til redis-serveren med dit eksisterende setup, da det højst sandsynligt er ret højt? Du kan bruge INFO-kommandoen til at få disse oplysninger:
redis-cli info
Tjek efter Kunder sektion, hvor du vil se "connected_clients " felt, der fortæller dig, hvor mange forbindelser du har åbne til redis-serveren på det tidspunkt.