¿Cuál es un buen enfoque para administrar la conexión de base de datos en una aplicación Python de Google Cloud SQL (GAE)?

Solo estoy aprendiendo Google App Engine y estoy tratando de encontrar un buen enfoque para administrar la conexión de mi base de datos a una instancia de Google Cloud SQL (si no ha usado GC-SQL, básicamente es MySQL en la nube, con algunos limitaciones).

Estoy usando el entorno python (2.7) GAE con el marco webapp2 para manejar solicitudes. Sé que las preguntas frecuentes dicen que se recomienda que se realice una nueva conexión con la base de datos con cada solicitud, pero no sé cuál es la forma recomendada de cerrar la conexión. Cada vez que intento eliminar tablas durante el desarrollo, el GC-SQL se bloquea y "mostrar lista de procesos" muestra que hay un montón de procesos (probablemente porque no estoy cerrando la base de datos) y que uno de ellos está esperando un bloqueo ( Es probable que el proceso intente descartar las tablas). Esto es molesto y me obliga a reiniciar la instancia de GC-SQL (como reiniciar el servicio mysql-server, me imagino). También hay problemas ocasionales de DB que creo que están relacionados con el hecho de que realmente no estoy cerrando mi conexión DB.

Entonces, por ejemplo, ¿debería tener un destructor en mi instancia de subclase webapp2.Requesthandler para desconectarme de la base de datos? Los objetos de GAE parecen estar en caché a veces, por lo que también es algo a tener en cuenta. Supongo que simplemente podría conectar / consultar / desconectar para cada consulta, pero esto parece subóptimo.

Sé que esta es una pregunta vaga, pero espero que alguien que haya jugado en esta área pueda mostrar algunos consejos a mi manera.

¡Gracias por adelantado!

Actualizar: Intenté implementar una envoltura alrededor de los métodos que necesitan un cursot, utilizando la respuesta de Shay como punto de partida. Estoy recibiendo errores de GAE. Aquí hay una nueva pregunta específica para eso:¿Cuáles son los límites de conexión para Google Cloud SQL de App Engine y cómo reutilizar mejor las conexiones de base de datos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta