2014-12-11 2 views
0

내 서버에 Flask + SQLAlchemy (DB는 Postgres)를 사용하고 있으며 연결 풀링이 어떻게되는지 궁금합니다. 나는 이것이 풀 크기 5로 기본적으로 활성화되어 있음을 알고 있지만, 내 코드가 그것을 트리거하는지는 모르겠습니다. 데이터베이스가 플라스크-SQLAlchemy의 장면 뒤에 연결 풀을 관리 않습니다 어떻게플라스크에서 sqlalchemy로 연결 풀 트리거링

db.session.query(......) 

처럼 호출을 배치 할 객체를 사용하여 다음

db = SQLAlchemy(app) 

그리고 :

내가 기본 플라스크 SQLAlchemy의 브리지를 사용하는 가정? db.session에 액세스 할 때마다 새로운 세션을 잡을 수 있습니까? 이 객체가 언제 풀에 반환됩니까 (로컬 변수에 저장하지 않는다고 가정)?

동시성 + 성능을 극대화하기 위해 코드를 작성하는 올바른 패턴은 무엇입니까? 하나의 직렬 방식으로 DB에 여러 번 액세스하는 경우 매번 db.session을 사용하는 것이 좋습니다?

나는이 방법에 대한 문서를 찾을 수 없습니다, 그래서 나는 장면 뒤에 무슨 일이 일어나고 있는지 모르는 (코드가 작동하지만, 확장 할 수?)

감사합니다! 당신은 이벤트 등록을 사용할 수 있습니다

+0

어떤 특정 문제가 있습니까? – Johnston

+0

과부하 상태에서 서버가 어떻게 반응하는지 모르겠습니다. 동시에 여러 개의 동시 요청이 들어올 것입니까? 그들은 올바르게 대우받을 것인가? 내가 가지고있는 것보다 더 많은 물체를 수영장으로 가지고 가거나 가져갈 수 있습니까? 수영장이 그 이상으로 확장됩니까? – Noam

+0

Flask-SQLAlchemy를 사용 중이고 동시 연결이 70 개 이상 발생하며 정상적으로 작동합니다. – Johnston

답변

0

-http://docs.sqlalchemy.org/en/latest/core/event.html#event-registration 모니터링 할 수있는 다양한 이벤트 유형, checkout, checkin, connect 등 ...이있다 - 여기

http://docs.sqlalchemy.org/en/latest/core/events.html이 때 인쇄에 워드 프로세서에서 기본적인 예입니다 새로운 연결이 설정됩니다.

from sqlalchemy.event import listen 
from sqlalchemy.pool import Pool 

def my_on_connect(dbapi_con, connection_record): 
    print "New DBAPI connection:", dbapi_con 

listen(Pool, 'connect', my_on_connect)