PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Flask i SQLAlchemy powodują wiele IDLE w połączeniach transakcyjnych w PostgreSQL

Widziałem tę sytuację, gdy uruchamiasz Flask w trybie debugowania . Jeśli Twój kod zgłosi wyjątek i uruchomi się debuger, transakcja nigdy nie zostanie „wycofana” ani „usunięta”. W rezultacie sesja użyta w żądaniu, które nie powiodło się, nigdy nie zostanie zwrócona do puli.

Rozwiązaniem jest wyłączenie trybu debugowania.

EDYCJA:

Jest jeszcze jedna okoliczność, w której to widziałem. Jeśli masz kod, który działa autonomicznie (tzn. nie jest częścią transakcji HTTP – na przykład niezależny wątek uruchomiony i odrodzony podczas uruchamiania aplikacji Flask), zwykle wiąże się to z uśpieniem. Jeśli uzyskasz dostęp do sesji przed snem, skończysz z zawieszoną transakcją podczas snu.

Inną możliwością jest dostęp do sesji z funkcji tworzenia aplikacji. Jeśli to zrobisz, upewnij się, że .remove() to. W przeciwnym razie ta sesja może pozostać zawieszona w głównym wątku w aplikacji gevent.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ZMIENIĆ tabelę PostgreSQL i uczynić kolumnę unikalną?

  2. Ograniczone uprawnienia PostgreSQL dla aplikacji internetowej

  3. Postgres tworzy błąd rozszerzenia POSTGIS w CentOS 6

  4. Jak wstawiać i usuwać dane w PostgreSQL

  5. Kolejność zwrotu wiersza SQL