PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Flask e SQLAlchemy causam muito IDLE em conexões de transação no PostgreSQL


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.