728x90
반응형

ChatGPT를 이용하여 코딩 공부를 해보려 한다. 

100일 동안 공부하고 기록할 것이다. 

많이 읽어주시고 항상 감사하다. (훈수는 항상 환영한다.)

 

Day 55: 최적화

  • API 호출 최적화와 캐싱.
  • 실습: 여러 코인 데이터를 효율적으로 가져오기.

목표:
API 호출 횟수를 줄이고 최적화
여러 코인 가격을 한 번에 가져오기
캐싱 기법 활용 (API 부담 감소 & 성능 향상)

 

1. API 호출을 최적화해야 하는 이유

  • API 호출 제한을 초과하면 일시적으로 차단될 위험
  • 불필요한 API 요청은 네트워크 비용 증가 & 성능 저하
  • 캐싱을 활용하면 중복 요청을 줄이고 속도를 높일 수 있음.

2. 여러 코인 가격을 한 번에 가져오기 (Binance API 활용)

기존 방식 (비효율적)
각 코인 가격을 개별적으로 가져오면 API 호출이 많아짐.

 

최적화된 방식 (한 번의 호출로 여러 코인 가격 가져오기)

 

이점:
✔ fetch_tickers()를 사용하여 API 호출을 1회로 줄임
응답 속도 단축 & 네트워크 부담 감소

3. 캐싱을 활용한 API 최적화

API를 호출할 때 같은 요청을 반복하지 않도록 캐싱하면 더 빠르게 실행할 수 있음.

1) functools.lru_cache()를 활용한 캐싱

 캐싱을 사용하면 최근 조회한 데이터는 메모리에서 가져오므로 속도가 훨씬 빠름

 

이점:
✔ 동일한 요청에 대해 API 호출 없이 즉시 응답 가능
✔ maxsize=10으로 설정하여 최대 10개의 요청을 캐싱

 

2) joblib을 활용한 디스크 캐싱

 joblib을 사용하면 API 응답을 파일로 저장하여 재사용 가능

 

이점:
프로그램이 재시작되어도 캐싱 유지
파일 기반으로 데이터 저장하여 메모리 절약

 

4. 실습 과제

20개 이상의 코인을 한 번의 API 호출로 가져오기
캐싱을 활용하여 API 호출 횟수 줄이기
데이터를 실시간으로 갱신하되, 불필요한 중복 요청 제거

 

코드 설명

  1. 한 번의 API 호출로 20개 이상의 코인 시세 가져오기
    • fetch_tickers(["코인1", "코인2", ...])
    • API 요청을 최소화하면서 여러 코인을 한 번에 가져옴
  2. 캐싱 활용 (cachetools.TTLCache)
    • 30초 동안 이전 데이터를 저장하여 중복 API 호출 방지
    • if symbol in cache and cache[symbol] == last_price:
      변화가 없으면 저장하지 않음
  3. 불필요한 중복 요청 제거
    • 데이터가 바뀌었을 때만 출력
    • API 요청 간격 조절 (time.sleep(5))

오늘은 이만 

 

읽어주셔서 감사하다.

반응형

+ Recent posts