【发布时间】:2018-12-07 18:38:39
【问题描述】:
我正在使用 Flask 和 Flask-SQLAlchemy 运行应用程序。
from config import FlaskDatabaseConfig
from flask import Flask
from flask import request
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
application = Flask(__name__)
application.config.from_object(FlaskDatabaseConfig())
db = SQLAlchemy(application)
@application.route("/queue/request", methods=["POST"])
def handle_queued_request():
stuff()
return ""
def stuff():
# Includes database queries and updates and a call to db.session.commit()
# db.session.begin() and db.session.close() are not called
pass
if __name__ == "__main__":
application.run(debug=False, port=5001)
现在,据我了解,通过使用 Flask-SQLAlchemy,我不需要自己管理会话。那么,如果我轮流向端点运行多个请求,为什么会出现以下错误?
sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 30 (Background on this error at: http://sqlalche.me/e/3o7r)
我尝试过使用db.session.close(),但后来我的数据库更新没有正确提交,而不是这个错误。我做错了什么?处理请求后是否需要手动关闭与数据库的连接?
【问题讨论】:
标签: python flask sqlalchemy flask-sqlalchemy