在Flask应用中使用SQL Alchemy时,如果应用不断向数据库发送查询,超过了连接池的最大连接数。我该如何解决这个问题?
sqlalchemy_engine.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.pool import QueuePool
class OrmEngine:
def __init__(self):
self.engine = create_engine(os.getenv('DATABASE_URL'),
poolclass=QueuePool,
pool_size=5,
max_overflow=3
)
self.session = sessionmaker(bind=self.engine)
示例查询
with self.orm_engine.session() as session:
user_repository = UserRepository(session)
user = user_repository.find_by_email(login_request.email)
我的联系人列表
+-----+-------------+-----------------+------+---------+------+--------------------------+------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+-----+-------------+-----------------+------+---------+------+--------------------------+------------------+----------+
| 2 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 1 | system user | | NULL | Daemon | NULL | InnoDB purge coordinator | NULL | 0.000 |
| 3 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 4 | system user | | NULL | Daemon | NULL | InnoDB purge worker | NULL | 0.000 |
| 5 | system user | | NULL | Daemon | NULL | InnoDB shutdown handler | NULL | 0.000 |
| 8 | root | localhost:56603 | NULL | Query | 0 | Init | SHOW PROCESSLIST | 0.000 |
| 645 | root | localhost:64281 | tbot | Sleep | 74 | | NULL | 0.000 |
| 662 | root | localhost:64334 | tbot | Sleep | 56 | | NULL | 0.000 |
| 684 | root | localhost:64400 | tbot | Sleep | 33 | | NULL | 0.000 |
| 705 | root | localhost:64476 | tbot | Sleep | 16 | | NULL | 0.000 |
| 707 | root | localhost:64482 | tbot | Sleep | 14 | | NULL | 0.000 |
| 709 | root | localhost:64488 | tbot | Sleep | 13 | | NULL | 0.000 |
| 711 | root | localhost:64494 | tbot | Sleep | 12 | | NULL | 0.000 |
| 713 | root | localhost:64500 | tbot | Sleep | 10 | | NULL | 0.000 |
| 715 | root | localhost:64506 | tbot | Sleep | 9 | | NULL | 0.000 |
| 717 | root | localhost:64512 | tbot | Sleep | 8 | | NULL | 0.000 |
| 719 | root | localhost:64518 | tbot | Sleep | 7 | | NULL | 0.000 |
| 720 | root | localhost:64521 | tbot | Sleep | 4 | | NULL | 0.000 |
| 722 | root | localhost:64527 | tbot | Sleep | 3 | | NULL | 0.000 |
| 724 | root | localhost:64533 | tbot | Sleep | 2 | | NULL | 0.000 |
| 726 | root | localhost:64539 | tbot | Sleep | 1 | | NULL | 0.000 |
+-----+-------------+-----------------+------+---------+------+--------------------------+------------------+----------+
21 rows in set (0.000 sec)```
I tried increasing the 'pool_size' and 'max_overflow' values.