開始接觸django只有乙個多月的時間,而且一開始完全是在修改別人的**,乙個乙個問題的改,感覺沒怎麼自己沒太大的進步。最近來了乙個新的需求:「讓django實現資料庫長連線」,網上找了很多資料也沒找到說名django資料庫長連線的,django的文件也裡裡外外的找了一遍,可就是沒提到資料庫長連線的。於是開始看django內部資料庫相關的**,發現可以採用下述方式實現資料庫長連線。
# register an event that closes the database connection
# when a django request is finished.
def close_connection(**kwargs):
for conn in connections.all():
conn.close()
signals.request_finished.connect(close_connection)
上述是django的一段資料庫相關**,可以在\django\db\__init__.py中找到。
如果不希望django在每次請求結束以後都關閉所有的連線,可以將上述最後一行**注釋。
經過測試,這樣是可以達到保持連線的要求了。但是這種修改django內部**的方式過於霸道了,所以繼續研究和最後一行**相關的signal物件,發現其中還有乙個disconnect方法,對應實現取消訊號關聯,所以可以採用在django專案中的__init__.py檔案中加入如下**來實現保持資料庫長連線的非非霸道操作
from django.core import signals
from django.db import close_connection
# 取消訊號關聯,實現資料庫長連線
signals.request_finished.disconnect(close_connection)
然後在啟動django專案以後就可以使資料庫連線保持。
好運吧!
Django設定資料庫長連線(會話保持)
django2設定資料庫長連線 會話保持 的方法如下 找到專案settings.py檔案,在 databases 中新增 conn max age 引數 databases conn max age引數說明 含義 連線的最長存活時間 單位 s秒鐘 預設值 0 django預設不進行長連線,即每次查詢...
django 資料庫連線模組解析及簡單長連線改造
工作中純服務端的專案用到了執行緒池和django的orm部分。django 的資料庫連線在每乙個執行緒中開啟乙份,並在查詢完畢後自動關閉連線。執行緒池處理任務時,正常使用的連線中不會被關閉,但由於資料庫端有最長連線時間的限制 預設為8小時 在超時後會發生inte ceerror 0,連線關閉後使用連...
Django連線資料庫
python 2.7 mysql 5.7.17 mysql安裝 mysql服務無法開啟解決方案 django專案連線mysql pip install pymysql init py add the code into the file import pymysql pymysql.install ...