2016-08-08 48 views
3

在使用Flask-SQLAlchemy時,在一段時間後,我得到錯誤'QueuePool限制大小10溢出10到達,連接超時'。我試圖增加連接池大小,但它只推遲了這個問題。SQLAlchemy引發QueuePool限制大小10溢出10達到,連接超時一段時間後

def create_app(config_name): 
    app = Flask(__name__) 
    app.config.from_object(config[config_name]) 
    config[config_name].init_app(app) 
    initialize_db(app) 

db = SQLAlchemy() 

def initialize_db(app): 
    db.init_app(app) 

SQLALCHEMY_POOL_SIZE = 100 

回答

2

我想通了這個問題。這個問題有時會導致數據庫連接失去狀態,導致池大小在一段時間後耗盡。
爲了解決這個問題,我對查詢超時進行了MySQL服務器配置更改,並將其更改爲1秒。
如果查詢沒有響應1秒鐘後,它會拋出異常,我添加除了在代碼塊調用該查詢(在我的情況下,它是GET查詢)塊。在Except塊中,我發佈了回滾命令。

0

我只是有這個問題。


我的情況

  • 我還沒有推出自己的網站,所以我花幾乎我所有的時間與本地版本,正在從PyCharm運行交互(即在我的電腦),所以我只注意到我的本地版本的網站上的錯誤,我甚至沒有嘗試查看它是否也會出現在網站的PythonAnywhere託管的生產版本上。
  • 我正在使用MySQL數據庫。
  • IIRC我從我的前端JavaScript開始運行頻繁(每10秒)的API調用時首先注意到了這個問題。
  • 我在我的app.run()中有debug=False,所以它不是由debug=True引起的,這是其他地方建議的。

我如何固定它

的問題就走了,當我在我的app.run()擺脫threaded=True

  • 所以,以前它是這樣的:
    • app.run(debug=False, threaded=True)
  • ,我改變了它看起來像這樣:
    • app.run(debug=False)

相關問題