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
2
POOL_RECYCLE_TIME = 60 * 60 * 4
engine = create_engine(f"mariadb+pymysql://{user}:{passwd}@{host}:{port}/{database}?charset=utf8mb4", pool_recycle=POOL_RECYCLE_TIME)

db 별 디폴트 커넥션 타임 아웃

  1. MySQL - 8시간 (28800초)
  2. PostgreSQL - 서버 설정에 따라 다름, 기본적으로는 타임아웃을 설정하지 않음
  3. SQL Server - 클라이언트 측 설정에 따라 다름, 기본적으로는 remote query timeout 옵션이 600초(10분)
  4. Oracle - SQLNET.EXPIRE_TIME 설정에 따라 다름, 기본값은 설정되어 있지 않음
  5. SQLite - 연결 타임아웃에 대한 기본 설정은 없음
  6. MongoDB - 10분 (600000ms), net.timeout 설정에 따라 다름

참고

Author

HyunSuk

Posted on

2024-06-29

Updated on

2024-06-29

Licensed under

댓글