SQLAlchemy中無法close的問題解決


之前在使用SQLAlchemy時都是用完程序就結束了,所以並沒有管連接的問題。但是這兩天需要建立一個服務,以每幾天訪問一次的頻率對數據庫進行訪問。

 

MySQL服務端會檢測每個鏈接在一段時間內是否有訪問。在默認值的情況下,如果28800s內沒有指令,一直是Sleep的狀態,那么就會把這個鏈接關閉。這樣當下次session再次連接時,就無法找到可用的連接了。

 

找到了兩個解決方案。一個是不用QueuePool,用NullPool。這樣的優點在於建立連接與否都是自己控制;缺點在於高並發時頻繁連接關閉損耗很大。這個帖子詳細說明了QueuePool的用法。http://www.tuicool.com/articles/Ybmemy

 

第二個解決方案就是設置回收時間。http://blog.csdn.net/u013673976/article/details/45939297

如果在沒有回收的情況下鏈接斷裂,那么會返回2013錯誤。如果回收時間設置的很短,那么2013錯誤就幾乎不會發生。當服務器關閉時,只需要捕獲2003錯誤就好。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM