Python flask-SQLAlchemy查询超时错误

时间:2017-05-12 11:02:53

标签: python sqlalchemy flask-sqlalchemy

我在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查询。 如果有人能给我任何建议,我很高兴。提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您认为您的数据库可以处理它,您应该能够通过http://flask-sqlalchemy.pocoo.org/2.1/config/增加SQLAlchemy池设置:

  • SQLALCHEMY_MAX_OVERFLOW可以增加(从10)到您想要允许的最大并发连接数
  • 如果响应时间不是主要问题,可以增加SQLALCHEMY_POOL_TIMEOUT以使等待线程有更多时间从池中获取连接