错误是sqlalchemy抛出。原因是你从pool拿的connection没有以session.commit或者session.rollback或者session.close的某一种放回pool里。这时connection的transaction没有完结(rollback or commit)。

而不知什么原因(recyle了,timeout了)你的connection又死掉了,你的sqlalchemy尝试重新连接。由于transaction还没完结,无法重连。

正确用法是确保每个web请求完了session.close或者session.rollback。把链接还回pool。


参见:

https://groups.google.com/forum/#!topic/sqlalchemy/qAMe78TV0M0