Python SQLAlchemy提高队列池大小限制10溢出达到10,连接在一段时间后超时

Python SQLAlchemy提高队列池大小限制10溢出达到10,连接在一段时间后超时,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,在使用Flask 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

在使用Flask 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

我解决了这个问题。问题是有时数据库连接将处于丢失状态,这会导致池大小在一段时间后耗尽。
为了解决这个问题,我对MySQL服务器配置进行了更改,设置为查询超时,并设置为1秒。
1秒后,如果查询没有响应,它将抛出异常,我在调用该查询的代码中添加了Exception块(在我的示例中是GET查询)。在Except块中,我发出了rollback命令。 我刚刚遇到了这个问题


我的处境

  • 我还没有启动我的网站,所以我几乎把所有的时间都花在了与本地版本的互动上,这是从PyCharm(即在我的计算机上)运行的,所以我只注意到了我的本地版本的网站上的错误,我甚至没有试着看看它是否也会出现在Pythonywhere托管的网站生产版本上
  • 我使用的是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)