2013-03-13 10 views
7

Qual è lo schema migliore per gestire le connessioni Redis (sia per interagire con Redis direttamente che indirettamente tramite Python-RQ)?Come gestire correttamente le connessioni Redis con Python/Python RQ?

In generale, le connessioni al database devono essere chiusi/tornato in una piscina quando fatto, ma non vedo come fare con Redis-py. Questo mi fa domandare se lo sto facendo nel modo sbagliato.

Inoltre, ho visto alcuni cali di prestazioni quando l'accodamento lavori RQ, che mi è stato detto potrebbe riguardare poveri utilizzo delle connessioni/riutilizzo.

Fondamentalmente, io sono interessato a conoscere il modello corretto, così posso né verificare o correggere ciò che abbiamo nella nostra applicazione.

Grazie mille! Se ci sono più informazioni che potrebbero essere utili, fammi sapere.

risposta

4

Dietro le quinte, Redis-py utilizza un pool di connessioni per gestire le connessioni a un server Redis. Per impostazione predefinita, ciascuna istanza di Redis creata crea a sua volta il proprio pool di connessioni. È possibile sovrascrivere questo comportamento e utilizzare un pool di connessioni esistente passando un'istanza del pool di connessione già creata all'argomento connection_pool della classe Redis. Si può scegliere di fare questo al fine di attuare lato client sharding o avere il controllo grana più fine di come sono gestiti i collegamenti

pool = redis.ConnectionPool(host='localhost', port=6379, db=0) 
r = redis.Redis(connection_pool=pool) 
+0

Grande! Tuttavia, non mi è ancora chiaro se le connessioni restituite da quel pool di connessioni dovrebbero essere chiuse in qualsiasi momento o se vengono gestite automaticamente. Qualche idea? –

+0

Non sto facendo nessuna chiusura delle connessioni, né ho letto nulla e non vedo ancora problemi di prestazioni. Forse c'è un modo corretto di gestire le connessioni – mmenafra

Problemi correlati