python - Flask、SQLAlchemy 和多线程 : MySQL too many connections

标签 python mysql multithreading flask sqlalchemy

我正在使用 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;

关于python - Flask、SQLAlchemy 和多线程 : MySQL too many connections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38684508/

相关文章:

c++ - 如何在不使用 <mutex> 的情况下在 C++11 中实现多线程安全单例

Python:为什么尽管变量被定义为整数,但仍被视为 'NoneType'?

python - 当尝试安装模块时,pip 会安装 python3.5,即使已经安装了 3.7

MySQL - 如何从 shell 写入文件?

java - 如何停止执行器服务内的长时间执行任务(例如无限循环)执行

c# - 无法调用 Invoke 或 BeginInvoke 错误

python - 优化二维数组中所有元素的舍入

python - 正确的 Keras/TensorFlow 激活函数用于简单的数字输入/输出

php - Symfony:学说进程 d:s:u 但数据库没有变化

php - 将 MySQL 列名映射到变量名