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”

Flask-SQLAlchemy

SQLAlchemy学习-9.一对多和多对一关系

flask-sqlalchemy