import os import queue import threading from finestock import APIProvider try: # 선택 의존성: 설치돼 있으면 .env 파일을 자동으로 읽어 os.environ에 채워준다. # pip install python-dotenv from dotenv import load_dotenv load_dotenv() except ImportError: pass import finestock import asyncio from loguru import logger import sys logger.add(sys.stdout, level="DEBUG") finestock.print_version_info() data_queue = queue.Queue() data_condition = threading.Condition() # 실키/토큰은 절대 코드에 하드코딩하지 말 것. 환경변수로 주입한다. # 예 (PowerShell): $env:APP_KEY="..."; $env:APP_SECRET="..." app_key = os.environ.get("APP_KEY", "YOUR_APP_KEY") app_secret = os.environ.get("APP_SECRET", "YOUR_APP_SECRET") access_token = os.environ.get("ACCESS_TOKEN", "") api_type = APIProvider.LSV api = finestock.APIFactory.create_api(api_type) api.set_oauth_info(app_key, app_secret) login = False if login: api.oauth() print(api.access_token) else: api.access_token = access_token api.headers['authorization'] = f"Bearer {access_token}" api.set_queue(data_queue, data_condition) async def main(): await api.connect() #await api.recv_orderbook("005930") #await api.recv_price("005930") #await api.recv_orderbook("082850") #await api.recv_price("082850") #await api.recv_price("233740") #await api.recv_index("405") #코스닥 150: 405 await api.recv_order_status() await api.run() asyncio.run(main()) #loop = asyncio.get_event_loop() #loop.run_until_complete(main()) #loop.close()