Я запускаю приложение с 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()
, но тогда вместо этой ошибки мои обновления базы данных не фиксируются должным образом. Что я делаю неправильно? Нужно ли вручную закрывать соединения с базой данных после обработки запроса?