Sqlalchemy Pool_recycle 설정
sqlalchemy pool_recycle옵션
- 세팅한 값(초) 후에 db 커넥션 풀을 다시 만든다. 디폴트는 -1
언제 세팅해야할까?
- mysql 처럼 디폴트로 커넥션 타임 아웃이 있는 db를 사용할 때 설정해줘야 한다 mysql을 사용하는데 pool_recycle 세팅을 안 한하고 배치 같은 작업을 돌린다면 에러를 보게 될 것이다
1
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (2006, 'MySQL server has gone away')
사용 예시
1 | POOL_RECYCLE_TIME = 60 * 60 * 4 |
db 별 디폴트 커넥션 타임 아웃
- MySQL - 8시간 (28800초)
- PostgreSQL - 서버 설정에 따라 다름, 기본적으로는 타임아웃을 설정하지 않음
- SQL Server - 클라이언트 측 설정에 따라 다름, 기본적으로는
remote query timeout
옵션이 600초(10분) - Oracle -
SQLNET.EXPIRE_TIME
설정에 따라 다름, 기본값은 설정되어 있지 않음 - SQLite - 연결 타임아웃에 대한 기본 설정은 없음
- MongoDB - 10분 (600000ms),
net.timeout
설정에 따라 다름
참고
Sqlalchemy Pool_recycle 설정