Files
KisStock/한국투자증권(API)/MCP/Kis Trading MCP/module/middleware.py
2026-01-31 22:34:57 +09:00

47 lines
1.3 KiB
Python

import uuid
from datetime import datetime
import time
from fastmcp.server.middleware import Middleware, MiddlewareContext
import module.factory as factory
# 기본 미들웨어
class EnvironmentMiddleware(Middleware):
def __init__(self, environment):
self.environment = environment
async def on_call_tool(self, context: MiddlewareContext, call_next):
ctx = context.fastmcp_context
# time counter start
t0 = time.perf_counter()
# started_at
started_dt = datetime.now()
ctx.set_state(factory.CONTEXT_STARTED_AT, started_dt.strftime("%Y-%m-%d %H:%M:%S"))
# request id
request_id = uuid.uuid4().hex
ctx.set_state(factory.CONTEXT_REQUEST_ID, request_id)
# context setup
ctx.set_state(factory.CONTEXT_ENVIRONMENT, self.environment)
try:
result = await call_next(context)
return result
except Exception as e:
raise e
finally:
# ended at
ended_at = datetime.now()
ctx.set_state(factory.CONTEXT_ENDED_AT, ended_at.strftime("%Y-%m-%d %H:%M:%S"))
# time counter end
elapsed_sec = time.perf_counter() - t0
ctx.set_state(factory.CONTEXT_ELAPSED_SECONDS, round(elapsed_sec, 2))