我正在構建一個集中的django應用程序,它將與具有基本相同模式的動態數量的數據庫進行交互。這些數據庫也被一些遺留應用程序使用,其中一些應用程序使用PHP。我們的解決方案避免了多個數據庫證書孤島,它將這些信息存儲在各個應用程序之外的通用設置文件中。設置文件可以創建,更改或刪除,而不必重新啓動django應用程序。Django中動態的每個請求數據庫連接
對於每個向django應用程序發出的請求,都會有一個http頭或一個url參數,它可以用來推斷要查看哪個設置文件來確定要使用哪個數據庫憑證。
我的第一個想法是使用自定義django中間件來解析設置文件(可能使用緩存),並在每個請求上創建一個新的連接對象,並在任何ORM活動之前將其修補爲django.db。
有沒有更優雅的方法來處理這種情況?有什麼線程安全問題,我應該考慮與中間件方法?
我不在乎解析問題的成本,所以我提到了緩存。如果推導出的數據庫名稱尚不存在,只需在settings.DATABASES中添加更多條目並刷新數據庫連接錯誤就相當簡單。更大的問題是中間件方法是否正確,或者在請求/響應週期中是否太遲或者是否存在線程安全問題。 – GDorn
哦..不,中間件似乎是一個很好的選擇。 – SingleNegationElimination