Flask,SQLAlchemy和多线程:MySQL连接太多
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask,SQLAlchemy和多线程:MySQL连接太多相关的知识,希望对你有一定的参考价值。
我正在使用Flask + SQL Alchemy + mysql编写多线程应用程序。
SQL Alchemy设置:
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_POOL_SIZE = 200
SQLALCHEMY_MAX_OVERFLOW = 50
SQLALCHEMY_POOL_RECYCLE = 5
我的应用程序可以同时运行多达300个线程。在每个线程中都有一些数据库用法,如:
# task == my model
db.session.add(task)
task.progress += 1
db.session.commit()
还有一些更复杂的代码
经过3-5分钟的工作后,由于连接太多,我的MySQL将会消失。我在每个线程完成他的工作后尝试过db.session.close()和db.session.bind.dispose()。但它没有帮助,在3-5分钟内将有200多个连接,MySQL将死亡。
如何正确管理这种连接?
答案
你可以用这种方式。
首先转到mysql服务器并更改max_connections选项。
设置全局max_connections = 1000;
以上是关于Flask,SQLAlchemy和多线程:MySQL连接太多的主要内容,如果未能解决你的问题,请参考以下文章
flask-sqlalchemy 和sqlalchemy的区别
使用 Flask 中的 SQLAlchemy 会话会引发“在线程中创建的 SQLite 对象只能在同一线程中使用”
flask wtforms sqlalchemy AttributeError:“str”对象没有属性“_sa_instance_state”