我们有一个包含 20 多个模块的 Python 应用程序,其中大部分由多个 Web 和控制台应用程序共享。
我从来没有清楚地了解在多模块 Python 应用程序中建立和管理数据库连接的最佳实践。考虑这个例子:
我有一个为用户定义对象类的模块。它有许多用于在数据库中创建/删除/更新用户的定义。users.py 模块被导入到 a) 基于控制台的实用程序,2) 基于 web.py 的 Web 应用程序和 3) 持续运行的守护进程。
这三个应用程序中的每一个都有不同的生命周期。守护进程可以打开连接并保持打开状态。控制台实用程序连接,确实工作,然后死亡。当然,http 请求是原子的,但是 web 服务器是一个守护进程。
我目前正在打开,使用然后关闭用户类中每个函数内的连接。这似乎是最低效的,但它适用于所有示例。另一种用作测试的方法是声明并打开整个模块的全局连接。另一种选择是在顶层应用程序层创建连接并在实例化类时传递引用,但这对我来说似乎是最糟糕的主意。
我知道每个应用程序架构都是不同的。我只是想知道是否有最佳实践,它会是什么?