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