2
它看起來像這樣,例如, MongoEngine的確如此。目標是讓模型文件能夠訪問數據庫,而不必顯式傳遞上下文。在Pyramid中,有一個用於存儲db連接的python全局變量是否安全?
它看起來像這樣,例如, MongoEngine的確如此。目標是讓模型文件能夠訪問數據庫,而不必顯式傳遞上下文。在Pyramid中,有一個用於存儲db連接的python全局變量是否安全?
金字塔與它無關。全局需要處理WSGI服務器用於爲應用程序提供服務的任何機制。例如,大多數服務器爲每個請求使用一個單獨的線程,因此您的全局變量需要是線程安全的。 gunicorn和gevent是使用greenlet服務的,這是一種不同的機制。
許多引擎/ orm支持threadlocal連接。這將允許您像連接全局變量一樣訪問連接,但它是每個線程中的一個不同變量。您只需確保在請求完成時關閉連接,以避免連接溢出到同一線程中的下一個請求中。這可以使用Pyramid tween或食譜中說明的其他幾種模式輕鬆完成。