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 호출 횟수 줄이기
✔ 데이터를 실시간으로 갱신하되, 불필요한 중복 요청 제거

코드 설명
- 한 번의 API 호출로 20개 이상의 코인 시세 가져오기
- fetch_tickers(["코인1", "코인2", ...])
- API 요청을 최소화하면서 여러 코인을 한 번에 가져옴
- 캐싱 활용 (cachetools.TTLCache)
- 30초 동안 이전 데이터를 저장하여 중복 API 호출 방지
- if symbol in cache and cache[symbol] == last_price:
→ 변화가 없으면 저장하지 않음
- 불필요한 중복 요청 제거
- 데이터가 바뀌었을 때만 출력
- API 요청 간격 조절 (time.sleep(5))
오늘은 이만
읽어주셔서 감사하다.
반응형
'코딩 100일 도전' 카테고리의 다른 글
| 취미로 코딩 공부하기 57일차 (0) | 2025.03.09 |
|---|---|
| 취미로 코딩 공부하기 56일차 (0) | 2025.03.07 |
| 취미로 코딩 공부하기 54일차 (0) | 2025.03.05 |
| 취미로 코딩 공부하기 53일차 (0) | 2025.03.04 |
| 취미로 코딩 공부하기 52일차 (0) | 2025.03.03 |