위 이미지와 같이 갑자기 API 요청들이 먹통이 됐는데, 처음엔 왜이러지 싶어서 파이썬 서버를 열어서 다시 확인해봤다.
똑같다.
곰곰이 생각해보니까 아마 MAP API를 지금 스프링에서도 연결하면서 문제가 된 것 같다는 생각이 들었다.
그래서 설정을 추가함.
위가 내 원래 서버, 도커서버인데.. 안되네?
그래서 도커 컴포즈에서 url을 고정 시킬 방법을 찾아봄.
아 그럴 필요없네 알아서 컨테이너 이름으로 url이 설정된다고 한다.
걍 설정 지워서 해결함.
보니까 내 API에서 보내는 요청은 IP 주소 형식이고 Spring에서는 웹사이트 url인데 이거 설정하기 귀찮다,,
근데 또 별게로 항상 켜두고 테스트를 해서 몰랐는데
배포한 서버에서는 리소스 관리 때문에 일정시간 접근이 없을시에 서버를 끄는데 이 때 DB 접근이 필요한 요청을 보내면
이런 문제가 생김.
한번 더 요청하면 잘 뜸.
그래서 DB 커넥션에 대한 코드를 추가함.
# db_utils.py
import logging
import time
from sqlalchemy.exc import OperationalError
def retry_query(session, query, retries=3, delay=5):
"""
데이터베이스 쿼리를 재시도하는 함수
Args:
session: SQLAlchemy 세션
query: 실행할 쿼리
retries: 재시도 횟수
delay: 재시도 전 대기 시간 (초 단위)
Returns:
쿼리 결과 또는 예외 발생 시 None 반환
"""
for i in range(retries):
try:
return query.all()
except OperationalError as e:
if i < retries - 1:
logging.warning(f"Query failed with error: {e}. Retrying in {delay} seconds...")
time.sleep(delay)
else:
logging.error(f"All retries failed for query: {e}")
return None
이렇게 추가했다.
제대로 작동하는 것 까지 확인하고.
이제 재배포 하면 됨.
재배포 와중에 도커 메모리 공간 부족하다고 해서 싹 정리한번 했다.
빌드 푸쉬 했고,
삭제하고 다시 가져오는중
pull 완료했고 테스트해봤는데 DB 접근을 못해서 둘 다 껐다가 다시 켜봄
그래도 안되네
두개 네트워크가 다른걸 확인.
통합시키고 테스트 해보니까 이제 잘 된다. 굳 다시 쓰고 있던 포스팅으로 가서 Spring 구현하면 될듯
'Coding History > Team Project' 카테고리의 다른 글
팀플) API 연결 비회원 별자리 데이터 처리, 유저 상세보기 페이지 (2) | 2024.11.15 |
---|---|
AWS S3, Terraform CLI (0) | 2024.11.12 |
팀플) Google Maps API 백엔드 통신 및 react-toastify 로 자연스러운 UI/UX 구현 (2) | 2024.11.08 |
팀플) Spring CRUD와 API 데이터 엮기 (Google Maps API) (1) | 2024.11.06 |
팀플) Merge 기록 (0) | 2024.11.04 |