-
Notifications
You must be signed in to change notification settings - Fork 73
Closed
Labels
버그뭔가 작동하지 않습니다.뭔가 작동하지 않습니다.
Description
빠른 문제 해결을 위해 다음을 확인했나요?
- PyKis Issues에서 검색했지만 유사한 버그를 찾지 못했습니다.
버그 설명
에러가 발생하는 코드
from util._pykis.Load_Pykis import KIS
stock = KIS.stock('002170').quote()
에러 내용
Exception has occurred: KeyError
"KisDomesticQuote.sector_name 필드의 bstp_kor_isnm값이 존재하지 않습니다. (KisString(field='bstp_kor_isnm', scope=None, absolute=False))"
File "C:\Git\Pykis_Data\app\temp.py", line 3, in <module>
stock = KIS.stock('002170').quote()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: "KisDomesticQuote.sector_name 필드의 bstp_kor_isnm값이 존재하지 않습니다. (KisString(field='bstp_kor_isnm', scope=None, absolute=False))"
에러 원인 추측
python-kis 라이브러리 app/stock/quote.py 의 domestic_quote 함수에서 한국투자 open api 의
국내주식시세 -> 주식현재가 시세[v1_국내주식-008] API 를 사용하고 있습니다.
API doc 에서는 업종 한글명인 bstp_kor_isnm 값을 제공한다고 하지만,
직접 002170 주식 코드로 fetch 해본 결과 bstp_kor_isnm 키 자체가 존재하지 않습니다.
kospi 주식 815 개로 테스트 해본 결과 다음 코드의 주식들이 같은 현상이 나타나고, quote 실행시 같은 오류가 발생합니다.
ErrorStock = [ '002170', '002450', '004700', '004970', '007160', '011090', '011330', '013890', '016800', '030720', '033780', '071950', '079430', '084680', '111380', '134790', '194370', '241590']
종속성 버전 문제 진단
Version: PyKis/2.0.3
Python: CPython 3.12.5
System: Windows 10.0.19045 [AMD64]
Installed Packages:
========== requests ===========
Required: 2.32.3>=
Installed: Not Found
====== websocket-client =======
Required: 1.8.0>=
Installed: Not Found
======== cryptography =========
Required: 43.0.0>=
Installed: Not Found
========== colorlog ===========
Required: 6.8.2>=
Installed: Not Found
재현 방법
from pykis import PyKis
#pykis 객체
KIS = PyKis(
id=SITE_ID,
account=ACC_NO_REAL,
appkey=APP_KEY_REAL,
secretkey=APP_SEC_REAL,
keep_token=True
)
stock = KIS.stock('002170').quote()
추가 정보
에러가 발생하는 종목들은 공통점이 있습니다.
코스피 주식 종목 엑셀 파일로 만들기를 이용해 엑셀 파일에서 확인해 본 결과 에러가 발생하는 18개의 종목들은 지수업종대분류, 지수업종중분류, 지수업종소분류 값이 0으로 업종 한글명을 알아낼수 없고, api 에서는 bstp_kor_isnm 값을 none 으로라도 제공해야하지만, 아예 key 자체를 제공하지 않는 것으로 보입니다
/pykis/api/stock/quote.py 404 줄을 bstp_kor_isnm 키가 없으면 상품유형타입을 빈문자열로 반환하도록 임시로 변경하니 에러는 발생하지 않았습니다.
#sector_name: str = KisString["bstp_kor_isnm"] # 이전 코드
sector_name: str = KisString["bstp_kor_isnm",""] # 변경된 코드
PR를 통해 라이브러리에 기여하고 싶으신가요?
- 네, PR을 제출하여 도움을 주고 싶습니다!
Metadata
Metadata
Assignees
Labels
버그뭔가 작동하지 않습니다.뭔가 작동하지 않습니다.