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.