This commit is contained in:
0Xiao0
2025-02-05 17:37:45 +08:00
parent c74b9ae0d2
commit aa901b717c
5 changed files with 54 additions and 60 deletions

View File

@ -41,9 +41,14 @@ env:
port: 8000 port: 8000
log: log:
level: debug handlers:
time_format: "%Y-%m-%d %H:%M:%S" - type: loki
filename: "D:/Workspace/Logging/jarvis/jarvis-models.log" url: "<loki url>"
x-odin-auth: "<odin token>"
labels:
app: jarvis-model
env: dev
localation: "mo"
melotts: melotts:
mode: local # or docker mode: local # or docker

53
main.py
View File

@ -1,38 +1,37 @@
import uvicorn import uvicorn
import logging import logging
from injector import Injector,inject from injector import Injector
from src.configuration import LogConf, singleton from src.configuration import singleton
# TODO: 當 skip_ssl 功能加入主分支後移除複制的代嗎改為使用pip安裝依賴。
from src.loki_logger_handler.loki_logger_handler import LokiLoggerHandler from src.loki_logger_handler.loki_logger_handler import LokiLoggerHandler
import argparse
import yaml 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 @singleton
class Main(): class Main():
@inject def __init__(self) -> None:
def __init__(self, logConf: LogConf) -> None:
logging.basicConfig(level=logConf.level,filename=logConf.filename,format="%(asctime)s %(levelname)s %(message)s") 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): def run(self):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.info("jarvis-models start", extra={"version": "0.0.1"}) logger.info("jarvis-models start", extra={"version": "0.0.1"})

Binary file not shown.

View File

@ -6,6 +6,8 @@ from fastapi.responses import JSONResponse
from src.blackbox.blackbox_factory import BlackboxFactory from src.blackbox.blackbox_factory import BlackboxFactory
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from injector import Injector from injector import Injector
import contextvars
import asyncio
app = FastAPI() app = FastAPI()
@ -29,3 +31,20 @@ async def blackbox(blackbox_name: Union[str, None] = None, request: Request = No
except ValueError: except ValueError:
return await JSONResponse(content={"error": "value error"}, status_code=status.HTTP_400_BAD_REQUEST) return await JSONResponse(content={"error": "value error"}, status_code=status.HTTP_400_BAD_REQUEST)
return await box.fast_api_handler(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()

View File

@ -97,36 +97,7 @@ class SenseVoiceConf():
self.speed = config.get("sensevoiceasr.speed") self.speed = config.get("sensevoiceasr.speed")
self.device = config.get("sensevoiceasr.device") self.device = config.get("sensevoiceasr.device")
self.language = config.get("sensevoiceasr.language") self.language = config.get("sensevoiceasr.language")
self.speaker = config.get("sensevoiceasr.speaker") 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)
@singleton @singleton
class EnvConf(): class EnvConf():