He visto que ocurre esta situación cuando ejecutas Flask en modo de depuración . Si su código arroja una excepción y el depurador se activa, la transacción nunca se "revertirá" o "eliminará". Como resultado, la sesión que se usó en la solicitud que falló nunca se devuelve al grupo.
La solución es deshabilitar el modo de depuración.
EDITAR:
Hay otra circunstancia en la que he visto que esto suceda. Si tiene un código que se ejecuta de forma autónoma (es decir, que no forma parte de una transacción HTTP, como un subproceso independiente iniciado y generado al iniciar la aplicación Flask), generalmente implicará una suspensión. Si accede a la sesión antes de la suspensión, terminará con una transacción bloqueada como esta durante la suspensión.
Otra posibilidad es que esté accediendo a una sesión desde la función de creación de aplicaciones. Si lo hace, asegúrese de .remove() . De lo contrario, esa sesión podría permanecer colgada en el hilo principal en una aplicación gevent.