PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Flask и SQLAlchemy причиняват много IDLE в транзакционните връзки в PostgreSQL

Виждал съм тази ситуация да се случва, когато стартирате Flask в режим на отстраняване на грешки . Ако вашият код хвърли изключение и дебъгерът се включи, транзакцията никога няма да бъде „отменена“ или „премахната“. В резултат на това сесията, която е била използвана за неуспешната заявка, никога не се връща в пула.

Решението е да деактивирате режима за отстраняване на грешки.

РЕДАКТИРАНЕ:

Има и друго обстоятелство, при което съм виждал това да се случва. Ако имате код, който се изпълнява автономно (т.е. не е част от HTTP транзакция – като независима нишка, стартирана и създадена при стартиране на приложението Flask), това обикновено включва заспиване. Ако осъществите достъп до сесията преди заспиване, ще завършите с прекъсната транзакция като тази по време на заспиване.

Друга възможност е да имате достъп до сесия от функцията за създаване на приложение. Ако го направите, не забравяйте да го .remove(). В противен случай тази сесия може да остане окачена в главната нишка в приложение 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. Как да създадете общ период на текущия период

  2. Дефинираната от потребителя функция на PostgreSQL в диалект за хибернация хвърля изключение

  3. django получава месец от датата за агрегиране

  4. MySQL колони с DEFAULT NULL - стилистичен избор, или е така?

  5. Получавате стойностите по подразбиране на колоните на таблицата в Postgres?