sql >> Databáze >  >> RDS >> PostgreSQL

Flask a SQLAlchemy způsobují v PostgreSQL mnoho IDLE v transakčních připojeních

Viděl jsem, že tato situace nastala, když spustíte Flask v režimu ladění . Pokud váš kód vyvolá výjimku a spustí se ladicí program, transakce nebude nikdy „vrácena“ nebo „odstraněna“. Výsledkem je, že relace, která byla použita u požadavku, který selhal, se nikdy nevrátí do fondu.

Řešením je zakázat režim ladění.

EDIT:

Je tu další okolnost, kdy jsem to viděl. Pokud máte kód, který běží autonomně (tj. není součástí transakce HTTP – jako nezávislé vlákno spuštěné a vytvořené při spuštění aplikace Flask), bude to obvykle zahrnovat spánek. Pokud přistoupíte k relaci před spánkem, skončíte s pozastavenou transakcí, jako je tato během spánku.

Další možností je, že k relaci přistupujete z funkce vytvoření aplikace. Pokud tak učiníte, nezapomeňte jej .remove(). Jinak by tato relace mohla zůstat viset v hlavním vláknu v aplikaci gevent.



  1. Jak předat uživatelsky definovaný typ tabulky jako parametr uložené procedury v C#

  2. Jak nastavit výchozí časové razítko na now() + n dní?

  3. Ukládání IP adres do databáze MySQL pomocí PHP

  4. SQL dotaz funguje v phpmyadmin, ale ne v php