我在python中使用flask-sqlalchemy库来管理我的数据库(我的sql)。 但是当我测试查询时,它会给我这个错误:
sqlalchemy.exc.TimeoutError: QueuePool limit of size 5 overflow 10 reached, connection timed out, timeout 10
测试代码很简单:
def test_query(self, i):
random = str(i)
result = Dao.query_user_by_nick("kael")
print("end query at %s, id: %s" % (datetime.datetime.now(), random), "\n result: " + str(len(result)))
threads = []
for i in range(0,100):
test = threading.Thread(target=test_query, args=(self, str(i)))
threads.append(test)
for t in threads:
t.start()
query_user_by_nick的实现是:
@classmethod
def query_user_by_nick(self,name):
user = User.query.filter_by(nick_name=name).all()
return user
当我在多线程中运行查询时,总会发生此错误,我不知道为什么会这样。我还在多线程中插入一些数据,它工作正常。 我四处搜寻,没有任何启发我。有人说连接将限制为15,但这个数据库将非常频繁地查询,并且不能像某个时间或类似的15查询。 如果有人能给我任何建议,我很高兴。提前谢谢。
答案 0 :(得分:2)
如果您认为您的数据库可以处理它,您应该能够通过http://flask-sqlalchemy.pocoo.org/2.1/config/增加SQLAlchemy池设置: