在Pyramid中,有一个存储数据库连接的python全局变量是否安全?

时间:2012-06-05 23:41:32

标签: python pyramid

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

1 个答案:

答案 0 :(得分:2)

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

例如,大多数服务器每个请求使用一个单独的线程,因此您的全局变量需要是线程安全的。使用greenlets提供gunicorn和gevent,这是一种不同的机制。

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