Flask, SQLAlchemy и Mysql

Переписывая сайт с картами Шри Ланки, столкнулся с забавной ошибкой Mysql: “Server has gone away”. Причем возникала она довольно часто. Сайт написан на Flask (python). Для работы с Mysql используется SQLAlchemy. Не сталкиваясь ранее с подобными вещами, немного удивился - с чего это Mysql отваливается. Как оказалось соединение просто не обновляется.

Решение - использовать пул соединений, который периодически обновляется. Для этого достаточно указать в настройках проекта количество соединений (SQLALCHEMY_POOL_SIZE) и время их жизни (SQLALCHEMY_POOL_RECYCLE), после которого они обновляются.

app = Flask(__name__)
app.config["SQLALCHEMY_POOL_SIZE"] = 5
app.config["SQLALCHEMY_POOL_TIMEOUT"] = 20
app.config["SQLALCHEMY_POOL_RECYCLE"] = 60

В данном примере пул состоит из 5 соединений, которые обновляются через 60 сек.

 
comments powered by Disqus