From 7f2f575ec8b786241e8e8290e19428e9338a2427 Mon Sep 17 00:00:00 2001 From: gahusb Date: Thu, 5 Feb 2026 01:00:20 +0900 Subject: [PATCH] =?UTF-8?q?KIS=20api=20=EB=84=88=EB=AC=B4=20=EC=9E=A6?= =?UTF-8?q?=EC=9D=80=20=ED=98=B8=EC=B6=9C=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20?= =?UTF-8?q?=ED=97=88=EC=9A=A9=20=ED=9A=9F=EC=88=98=20=EC=A0=9C=ED=95=9C?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=9D=B8=ED=84=B0=EB=B2=8C=20=EB=8A=98?= =?UTF-8?q?=EB=A6=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/analysis/macro.py | 4 ++++ modules/services/kis.py | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/analysis/macro.py b/modules/analysis/macro.py index a9e1a1b..8c6a7cb 100644 --- a/modules/analysis/macro.py +++ b/modules/analysis/macro.py @@ -1,4 +1,5 @@ from datetime import datetime +import time import os from dotenv import load_dotenv from modules.services.kis import KISClient @@ -31,6 +32,8 @@ class MacroAnalyzer: for name, code in indicators.items(): data = kis_client.get_current_index(code) + time.sleep(0.6) # Rate Limit 방지 (초당 2회 제한) + if data: price = data['price'] change = data['change'] @@ -46,6 +49,7 @@ class MacroAnalyzer: results[name] = {"price": 0, "change": 0} # [신규] 시장 스트레스 지수(MSI) 추가 + time.sleep(0.6) # MSI 계산 전 추가 대기 kospi_stress = MacroAnalyzer.calculate_stress_index(kis_client, "0001") results['MSI'] = kospi_stress print(f" - Market Stress Index: {kospi_stress}") diff --git a/modules/services/kis.py b/modules/services/kis.py index 468605e..b69f362 100644 --- a/modules/services/kis.py +++ b/modules/services/kis.py @@ -30,9 +30,9 @@ class KISClient: self.last_req_time = 0 def _throttle(self): - """API 요청 속도 제한 (초당 5회 이하로 제한)""" - # 모의투자는 Rate Limit이 더 엄격할 수 있음 - min_interval = 0.2 # 0.2초 대기 + """API 요청 속도 제한 (초당 2회 이하로 제한)""" + # 모의투자는 Rate Limit이 매우 엄격함 (초당 2~3회 권장) + min_interval = 0.5 # 0.5초 대기 (초당 2회) now = time.time() elapsed = now - self.last_req_time