在金字塔中,拥有一个存储数据库连接的 python 全局变量是否安全



看起来这就是MongoEngine所做的。 目标是使模型文件能够访问数据库,而无需显式传递上下文。

金字塔与

它无关。全局需要处理 WSGI 服务器用于为您的应用程序提供服务的任何机制。

例如,大多数服务器为每个请求使用单独的线程,因此全局变量需要是线程安全的。 Gunicorn和Gevent使用Greenlets,这是一种不同的机制。

许多引擎/orm 都支持线程本地连接。这将允许您像访问全局变量一样访问连接,但它在每个线程中都是不同的变量。您只需确保在请求完成时关闭连接,以避免该连接溢出到同一线程中的下一个请求中。这可以使用金字塔补间或食谱中说明的其他几种模式轻松完成。

最新更新