2016-08-08 10 views
3

Flask-SQLAlchemyを使用しているときに、サイズ10オーバーフロー10のQueuePool制限に達しました。接続がタイムアウトしました。私は接続プールのサイズを増やそうとしましたが、問題を遅らせるだけでした。SQLAlchemyは、サイズ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秒後にExceptionがスローされ、そのクエリが呼び出された場所のコード以外にブロックが追加されました(私の場合は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)

関連する問題