저는 PostgreSQL 9.3 및 SQLAlchemy 0.8.2를 실행 중이며 데이터베이스 연결이 누출되는 것을 경험합니다. 앱을 배포 한 후 약 240 개의 연결을 사용합니다. 다음 30 시간 동안이 숫자는 PostgreSQL이 연결을 끊기 시작할 때 점차 500까지 증가합니다.데이터베이스 연결 누설 : PostgreSQL, SQLAlchemy, Flask
내가 SQLAlchemy의 thread-local sessions 사용 :
@app.teardown_request
def teardown_request(exception=None):
if not app.testing:
Session.remove()
이것은와 동일해야합니다 :
플라스크 웹 앱from sqlalchemy import orm, create_engine
engine = create_engine(os.environ['DATABASE_URL'], echo=False)
Session = orm.scoped_session(orm.sessionmaker(engine))
의 Session
프록시 객체에 .remove()
호출 요청 분해시 전송입니다 what Flask-SQLAlchemy
뭐하는거야?
나는 또한 루프에서 실행 약간의주기적인 작업을, 나는 루프의 모든 반복에 대해 .remove()
전화 :
def run_forever():
while True:
do_stuff(Session)
Session.remove()
내가 잘못 뭐하는 거지 연결 누출에게로 이어질 수 있을까?
flask-sqlalchemy로 태그를 지정했지만 세션을 관리하기 위해 flask-sqlalchemy를 사용하지 않는 이유가 있습니까? – davidism
또한 백그라운드 작업을 실행하는 것은 정말 나쁜 방법입니다. 샐러리를 사용할 것을 고려하십시오. Flask 문서의 태스크에 앱 컨텍스트와 db 세션을 가져 오는 패턴이 있습니다. – davidism
앱은 어떻게 배포됩니까? –