2

내 플라스크 응용 프로그램과 함께 외부 연결 풀러로 pgpool 또는 pgbouncer을 사용하고 싶습니다. flask-sqlalchemy 확장은 연결 풀을 NullPool으로 변경하는 방법을 드러내지 않는 것처럼 보입니다. 이것을 할 수있는 방법이 있습니까?flask-sqlalchemy에서 PostgreSQL으로 연결 풀링을 비활성화하는 방법은 무엇입니까?

+0

왜 flask-sqlalchemy 연결 풀링을 비활성화 하시겠습니까? pgpool 또는 pgbouncer (pgpool이 필요하지 않은 경우 pgbouncer를 선택합니다)의 경우에도 로컬 연결 풀링을 사용하는 것이 좋습니다. 트랜잭션을 기반으로 pgbouncer를 설정하면 문제가되지 않습니다 :) – Wolph

+0

내 경우 pgbouncer가 내 플라스크 응용 프로그램과 동일한 시스템에서 실행됩니다. 그래서 두 번 연결 풀링을하는 것이 비효율적 인 것처럼 보입니다. 한 번은 플라스크 앱에서, 다시 한번 pgbouncer에서 연결 풀링을하는 것입니다. pgbouncer에 대한 로컬 TCP 연결을 만드는 것이 빠르다. 예 : - https://github.com/kljensen/async-flask-sqlalchemy-example#warnings-i-lied-it-actually-does-block - NullPool을 사용할 수 있다고 제안하지만 정확한 방법을 모르겠습니다. – donatello

답변

2

apply_driver_hacks 방법으로 가능해야하지만 반대하는 것이 좋습니다.

로컬 시스템에서는 TCP 오버 헤드가 무시할 만하지만 인증 및 협상 (예 : 인코딩)은 확실하지 않습니다. 풀을 유지하는 것은 Flask 내에서 항상 유용하며 필요한 경우 SQLALCHEMY_POOL_SIZE, SQLALCHEMY_POOL_TIMEOUT, SQLALCHEMY_POOL_RECYCLESQLALCHEMY_MAX_OVERFLOWsettings으로 구성 할 수 있습니다.

단순히 오버 헤드 (완전히 무시할 수 있음)를 줄이고 하나의 인스턴스 인 Flask 앱이 Postgres에 연결하는 유일한 방법이면 PgBouncer/PgPool을 제거하는 것이 좋습니다.