athere
반응형

맞아요! 1분당 API 제한이 2400회일 경우 더 빠르게 처리하는 방법은 크게 두 가지입니다:


✅ 1. API 소모량을 줄이는 방법 (효율화)

🔹 a. 불필요한 요청 제거

  • 이미 받은 데이터나 상태는 캐싱하고, 같은 요청을 반복하지 않기
  • 예: 가격이 갱신되지 않았는데도 계속 get_price() 요청하는 경우 차단

🔹 b. 요청 단위 줄이기 (bulk 처리 활용)

  • 하나하나 요청하는 대신 multi-symbol, multi-timeframe 요청을 지원하는 경우 이용
    (예: Binance의 batchOrders, multi symbol klines 등)

🔹 c. 빈도 낮추기 (debounce / throttle)

  • 실시간이 아닌 이상, 예를 들어 3초 단위로 한 번씩만 체크하는 식으로 빈도 줄이기

🔹 d. 필요한 symbol만 필터링

  • 조건에 해당하지 않는 심볼까지 전체 요청하지 않고, 사전에 필터링 후 요청

🔹 e. WebSocket 사용 (가능할 경우)

  • 반복적인 REST API 요청 대신, 가격/체결 등의 실시간 정보는 WebSocket으로 대체

✅ 2. API 사용량은 그대로, 더 많이 처리하기 (속도 ↑)

🔹 a. 병렬 처리 (비동기/멀티스레드)

  • asyncio, aiohttp, httpx 등을 활용해 동시에 여러 요청 처리
    (단, 동시에 보내도 제한은 공유되므로 소모량이 문제될 수 있음)

🔹 b. 순서를 최적화

  • 조건을 먼저 돌리고, 매매/조회 요청을 나중에 몰아서 실행
    (예: loop_table_condition_async() → 조건 충족한 symbol만 get_trade_info)

✅ 3. API Limit 관리 팁

  • Binance 기준, 기본은 1분 1200~2400 weight이며, 각 요청마다 weight 다름 → GET /api/v3/account (10 weight), GET /api/v3/ticker/price (1 weight)

➤ API 문서에서 "weight" 확인하고, 고비용 요청은 최소화

➤ 요청 전에 "남은 weight" 체크 가능 (X-MBX-USED-WEIGHT-1M)


필요하다면, 지금 사용 중인 요청 리스트나 코드 흐름을 보여주시면 구체적으로 어떤 걸 줄일 수 있을지 최적화 방안을 드릴 수 있어요.
예: get_trade_info_async() 안에서 뭐가 반복되고 있는지 등!

반응형
profile

athere

@athere

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!