diff --git a/README.md b/README.md index f29c2fa..8a8d00e 100644 --- a/README.md +++ b/README.md @@ -41,9 +41,14 @@ env: port: 8000 log: - level: debug - time_format: "%Y-%m-%d %H:%M:%S" - filename: "D:/Workspace/Logging/jarvis/jarvis-models.log" + handlers: + - type: loki + url: "" + x-odin-auth: "" + labels: + app: jarvis-model + env: dev + localation: "mo" melotts: mode: local # or docker diff --git a/main.py b/main.py index 3afe242..3786ef3 100644 --- a/main.py +++ b/main.py @@ -1,38 +1,37 @@ import uvicorn import logging -from injector import Injector,inject -from src.configuration import LogConf, singleton +from injector import Injector +from src.configuration import singleton + +# TODO: 當 skip_ssl 功能加入主分支後移除複制的代嗎,改為使用pip安裝依賴。 from src.loki_logger_handler.loki_logger_handler import LokiLoggerHandler -import argparse + import yaml -with open(".env.yaml", "r") as file: - config = yaml.safe_load(file) - log_handler_confg = config["log"]["handlers"] - log_handlers = [] - for handler_config in log_handler_confg: - if handler_config["type"] == "loki": - log_handlers.append(LokiLoggerHandler( - url=handler_config["url"], - additional_headers={"X-Odin-Auth": handler_config["x-odin-auth"]}, - labels=handler_config["labels"], - label_keys={}, - timeout=10, - enable_structured_loki_metadata=True, - loki_metadata={"service": "user-service", "version": "1.0.0"}, - insecure_ssl_verify=False - )) - - logging.basicConfig(level=logging.DEBUG, handlers=log_handlers) - logging.info("logging init finish") - @singleton class Main(): - @inject - def __init__(self, logConf: LogConf) -> None: - logging.basicConfig(level=logConf.level,filename=logConf.filename,format="%(asctime)s %(levelname)s %(message)s") - + def __init__(self) -> None: + + with open(".env.yaml", "r") as file: + config = yaml.safe_load(file) + log_handler_confg = config["log"]["handlers"] + log_handlers = [] + for handler_config in log_handler_confg: + if handler_config["type"] == "loki": + log_handlers.append(LokiLoggerHandler( + url=handler_config["url"], + additional_headers={"X-Odin-Auth": handler_config["x-odin-auth"]}, + labels=handler_config["labels"], + label_keys={}, + timeout=10, + enable_structured_loki_metadata=True, + loki_metadata={"service": "user-service", "version": "1.0.0"}, + insecure_ssl_verify=False + )) + logging.basicConfig(level=logging.DEBUG, handlers=log_handlers) + logging.info("logging init finish") + def run(self): logger = logging.getLogger(__name__) logger.info("jarvis-models start", extra={"version": "0.0.1"}) diff --git a/output.wav b/output.wav deleted file mode 100644 index d759a07..0000000 Binary files a/output.wav and /dev/null differ diff --git a/server.py b/server.py index d32b58d..b235777 100644 --- a/server.py +++ b/server.py @@ -6,6 +6,8 @@ from fastapi.responses import JSONResponse from src.blackbox.blackbox_factory import BlackboxFactory from fastapi.middleware.cors import CORSMiddleware from injector import Injector +import contextvars +import asyncio app = FastAPI() @@ -29,3 +31,20 @@ async def blackbox(blackbox_name: Union[str, None] = None, request: Request = No except ValueError: return await JSONResponse(content={"error": "value error"}, status_code=status.HTTP_400_BAD_REQUEST) return await box.fast_api_handler(request) + +user_id_var = contextvars.ContextVar('user_id') + +async def perform_action(): + user_id1 = user_id_var.get() + await asyncio.sleep(5) + user_id = user_id_var.get() + # Perform action based on user ID + print(f"{user_id1}:{user_id}") + +@app.post("/llm") +async def llm(request: Request = None): + + user_id_var.set(request.headers["context-id"]) + + print(request.headers["context-id"]) + # await perform_action() diff --git a/src/configuration.py b/src/configuration.py index 0c6e0cb..d269d4e 100644 --- a/src/configuration.py +++ b/src/configuration.py @@ -97,36 +97,7 @@ class SenseVoiceConf(): self.speed = config.get("sensevoiceasr.speed") self.device = config.get("sensevoiceasr.device") self.language = config.get("sensevoiceasr.language") - self.speaker = config.get("sensevoiceasr.speaker") - -# 'CRITICAL': CRITICAL, -# 'FATAL': FATAL, -# 'ERROR': ERROR, -# 'WARN': WARNING, -# 'WARNING': WARNING, -# 'INFO': INFO, -# 'DEBUG': DEBUG, -# 'NOTSET': NOTSET, -DEFAULT_LEVEL="WARNING" -DEFAULT_TIME_FORMAT="%Y-%m-%d %H:%M:%S" - -@singleton -class LogConf(): - level: int - time_format = "%Y-%m-%d %H:%M:%S" - filename: str | None - @inject - def __init__(self, config: Configuration) -> None: - self.level = config.get("log.level") - c = config.get("log.level", default=DEFAULT_LEVEL).upper() - level=logging._nameToLevel.get(c) - if level is None: - self.level = logging.WARNING - else: - self.level = level - self.filename = config.get("log.filename") - self.time_format = config.get("log.time_format", default=DEFAULT_TIME_FORMAT) - + self.speaker = config.get("sensevoiceasr.speaker") @singleton class EnvConf():