Ho creato una libreria in Python che contiene funzioni per l'accesso a un database. Questa è una libreria wrapper attorno a un database di applicazioni di terze parti, scritta a causa del fatto che l'applicazione di terze parti non offre un'API decente. Ora originariamente lasciavo che ogni funzione aprisse una connessione al database per la durata della chiamata di funzione che era OK, fino a quando la mia logica del programma usava chiamate nidificate alle funzioni in cui avrei poi chiamato una particolare funzione alcune migliaia di volte. Questo non è stato molto performante. La profilazione ha mostrato che l'overhead era nell'impostazione della connessione al database, una volta per chiamata di funzione. Quindi ho spostato la connessione aperta dall'interno delle funzioni al modulo stesso, in modo che la connessione al database venisse aperta al momento dell'importazione del modulo di libreria. Questo mi ha dato una prestazione accettabile.
Ora ho due domande a riguardo. In primo luogo, devo preoccuparmi di non chiudere più esplicitamente la connessione al database e come potrei farlo esplicitamente con questa configurazione? In secondo luogo, ciò che ho fatto si avvicina al regno delle buone pratiche e come potrei altrimenti affrontarlo?
openConn
funzione e fai in modo che l'utente la passi a ciascuna funzione che chiama, in questo modo può esplorare la connessione in unawith
dichiarazione o altro