Eu vi essa situação ocorrer quando você executa o Flask no modo de depuração a> . Se o seu código lançar uma exceção e o depurador entrar em ação, a transação nunca será "revertida" ou "removida". Como resultado, a sessão que foi usada na solicitação que falhou nunca é retornada ao pool.
A solução é desabilitar o modo de depuração.
EDITAR:
Há outra circunstância em que eu vi isso acontecer. Se você tiver um código que é executado de forma autônoma (ou seja, não faz parte de uma transação HTTP - como um encadeamento independente iniciado e gerado na inicialização do aplicativo Flask), geralmente envolve uma suspensão. Se você acessar a sessão antes da suspensão, acabará com uma transação suspensa como essa durante a suspensão.
Outra possibilidade é que você esteja acessando uma sessão a partir da função criar aplicativo. Se você fizer isso, certifique-se de .remove(). Caso contrário, essa sessão pode permanecer travada no thread principal em um aplicativo gevent.