Abbiamo un'applicazione Python con oltre venti moduli, la maggior parte dei quali sono condivisi da diverse applicazioni web e console.Come devo stabilire e gestire le connessioni del database in un'app Python multi-modulo?
Non ho mai avuto una chiara comprensione delle migliori pratiche per stabilire e gestire la connessione al database in app Python multi modulo. Considerare questo esempio:
Ho un modulo che definisce una classe di oggetti per gli utenti. Ha molti difetti per la creazione/eliminazione/aggiornamento degli utenti nel database. Il modulo users.py viene importato in a) un'utilità basata su console, 2) un'applicazione web basata su web.py e 3) un processo daemon in esecuzione costante.
Ognuna di queste tre applicazioni ha diversi cicli di vita. Il demone può aprire una connessione e tenerla aperta. L'utilità della console si connette, funziona, quindi muore. Ovviamente le richieste http sono atomiche, tuttavia il web server è un demone.
Attualmente sto aprendo, utilizzando poi la chiusura di una connessione all'interno di ogni funzione nella classe Utenti. Questo sembra il più inefficiente, ma funziona in tutti gli esempi. Un'alternativa utilizzata come test è dichiarare e aprire una connessione globale per l'intero modulo. Un'altra opzione sarebbe quella di creare la connessione al livello superiore dell'applicazione e passare i riferimenti durante l'istanziazione delle classi, ma questa mi sembra l'idea peggiore.
So che ogni architettura dell'applicazione è diversa. Mi sto solo chiedendo se esiste una buona pratica e quale sarebbe?
Guarda il pool di connessioni come per questa [domanda] (http://stackoverflow.com/questions/98687/what-is-the-best-solution-for-database-connection-pooling-in-python) – Mark