상태 JSON 파일의 API 요청 통계를 업데이트하고, 평균 응답 시간 및 가동 시간을 수정하였습니다. 배경 제거 모델의 처리 로직을 개선하고, 이미지의 투명 배경을 흰색으로 채우는 기능을 추가하였습니다. 프론트엔드 마스크 생성 시 오류 메시지를 개선하였습니다.
This commit is contained in:
parent
9aa46fac13
commit
bd21e54365
|
|
@ -9,6 +9,9 @@ import numpy as np
|
|||
import onnxruntime # ONNX 런타임 직접 사용을 위해 임포트
|
||||
from typing import Union, Tuple, Optional
|
||||
import asyncio
|
||||
from ..core.config import settings
|
||||
from ..utils.gpu_monitor import gpu_monitor
|
||||
from ..utils.image_utils import fill_transparent_background_with_white
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -221,39 +224,20 @@ class RembgProcessor:
|
|||
import time
|
||||
|
||||
start_time = time.time()
|
||||
result = rembg.remove(img_rgb, session=session, alpha_matting=kwargs.get("alpha_matting", False))
|
||||
end_time = time.time()
|
||||
|
||||
if not isinstance(result, Image.Image):
|
||||
result = Image.fromarray(result)
|
||||
|
||||
# RGBA 이미지에서 RGB와 마스크 분리
|
||||
result_rgba = np.array(result)
|
||||
if result_rgba.shape[2] == 4:
|
||||
result_rgb = result_rgba[:, :, :3]
|
||||
mask = result_rgba[:, :, 3]
|
||||
else:
|
||||
result_rgb = result_rgba
|
||||
# 간단한 마스크 생성 (배경이 검은색이라고 가정)
|
||||
gray = cv2.cvtColor(result_rgb, cv2.COLOR_RGB2GRAY)
|
||||
mask = (gray > 10).astype(np.uint8) * 255
|
||||
|
||||
processing_time = end_time - start_time
|
||||
# provider 기반 상태 로깅 (세션에서 확인 시도)
|
||||
try:
|
||||
sess = self.sessions.get(f"{self.MODEL_NAME_MAPPING.get(effective_model_name, effective_model_name)}_cuda_{self.device == 'cuda'}")
|
||||
providers = []
|
||||
if sess and getattr(sess, 'inner_session', None) and hasattr(sess.inner_session, 'get_providers'):
|
||||
providers = sess.inner_session.get_providers() or []
|
||||
cuda_status = "CUDA" if any('CUDA' in p or 'Tensorrt' in p for p in providers) else "CPU"
|
||||
except Exception:
|
||||
cuda_status = "알 수 없음"
|
||||
logger.info(f"✅ 배경 제거 성공: {effective_model_name} ({cuda_status}, {processing_time:.2f}초)")
|
||||
|
||||
return result_rgb, mask
|
||||
# rembg.remove는 RGBA 이미지를 반환
|
||||
output_image_rgba = rembg.remove(image, session=session)
|
||||
|
||||
# 투명 배경을 흰색으로 채우기
|
||||
output_image_rgb = fill_transparent_background_with_white(output_image_rgba)
|
||||
|
||||
# 마스크 생성 (알파 채널 사용)
|
||||
mask = output_image_rgba[:, :, 3]
|
||||
|
||||
logger.debug("Background removal and white filling successful.")
|
||||
return output_image_rgb, mask
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"배경 제거 처리 중 오류 ({model_name}): {e}", exc_info=True)
|
||||
logger.error(f"Error during rembg processing: {e}", exc_info=True)
|
||||
return None, None
|
||||
|
||||
def set_default_model(self, model_name):
|
||||
|
|
|
|||
|
|
@ -196,8 +196,29 @@ def gen_frontend_mask(mask: np.ndarray) -> np.ndarray:
|
|||
return binary_mask
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"프론트엔드 마스크 생성 실패: {e}")
|
||||
return mask
|
||||
logger.error(f"Error in gen_frontend_mask: {e}")
|
||||
return image # fallback to original mask
|
||||
|
||||
|
||||
def fill_transparent_background_with_white(image: np.ndarray) -> np.ndarray:
|
||||
"""
|
||||
RGBA 이미지의 투명 배경을 흰색으로 채웁니다.
|
||||
"""
|
||||
if image.shape[2] == 4:
|
||||
# 알파 채널을 마스크로 사용
|
||||
alpha_channel = image[:, :, 3]
|
||||
mask = alpha_channel > 0
|
||||
|
||||
# RGB 채널과 흰색 배경 생성
|
||||
rgb_image = image[:, :, :3]
|
||||
white_background = np.full(rgb_image.shape, 255, dtype=np.uint8)
|
||||
|
||||
# 마스크를 사용하여 전경과 배경을 조합
|
||||
result = np.where(mask[:, :, np.newaxis], rgb_image, white_background)
|
||||
return result
|
||||
else:
|
||||
# 이미 RGBA가 아니면 그대로 반환
|
||||
return image
|
||||
|
||||
|
||||
def resize_image(image: np.ndarray, target_size: Tuple[int, int], keep_aspect: bool = True) -> np.ndarray:
|
||||
|
|
|
|||
|
|
@ -610,3 +610,88 @@ INFO: 127.0.0.1:60494 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
|||
INFO: 127.0.0.1:56938 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:38902 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:38904 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:43862 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:57190 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:53756 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51948 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:44778 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:55164 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:55172 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:59020 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:43922 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:58468 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:43172 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:56638 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:55948 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51100 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51108 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:35720 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:33594 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:42922 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:39192 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:43232 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:33170 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:40822 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:34828 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:34832 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:38958 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:39294 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:57880 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:34898 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:47888 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:60396 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:59788 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:59798 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:35144 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:35152 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:54856 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:33396 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:48818 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:36082 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:54950 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:48766 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:54512 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51576 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51580 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:58962 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:51596 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:37646 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:53158 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:56512 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:48684 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:48696 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:52286 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:45882 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:43724 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:55154 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:48194 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:47442 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:58936 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:58944 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:56704 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:34814 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:43998 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:58974 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:46332 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:46342 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:49574 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:60054 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:60058 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:45212 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:44924 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:38724 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:34390 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:53224 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:36312 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:49726 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:59784 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:35516 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:35518 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:42052 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:60820 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:45948 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:36840 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:33870 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:33872 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:35052 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
INFO: 127.0.0.1:55622 - "GET /api/v1/stats HTTP/1.1" 200 OK
|
||||
|
|
|
|||
|
|
@ -620,3 +620,99 @@ INFO: connection closed
|
|||
INFO: connection closed
|
||||
INFO: connection open
|
||||
INFO: ('192.168.0.119', 49234) - "WebSocket /ws" [accepted]
|
||||
INFO: connection open
|
||||
INFO: 192.168.0.119:49288 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49303 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49304 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49300 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49413 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49417 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49423 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49433 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49659 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49660 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49661 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49662 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49756 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49757 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49758 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49759 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: ('192.168.0.119', 49772) - "WebSocket /ws" [accepted]
|
||||
브로드캐스트 오류: list.remove(x): x not in list
|
||||
INFO: connection closed
|
||||
INFO: connection open
|
||||
INFO: 192.168.0.119:49841 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49848 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49854 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49857 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49976 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49977 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49978 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49983 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: ('192.168.0.119', 49988) - "WebSocket /ws" [accepted]
|
||||
INFO: connection open
|
||||
INFO: 192.168.0.119:49976 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49977 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49978 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49983 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: connection closed
|
||||
브로드캐스트 오류: list.remove(x): x not in list
|
||||
INFO: 192.168.0.119:49976 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49977 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49978 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49983 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50180 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50181 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49976 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49977 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49978 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49983 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: ('192.168.0.119', 50202) - "WebSocket /ws" [accepted]
|
||||
INFO: 192.168.0.119:50181 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49978 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49983 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49977 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: connection open
|
||||
INFO: 192.168.0.119:50181 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:49978 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50398 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50403 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50398 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50403 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50578 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50590 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
브로드캐스트 오류: list.remove(x): x not in list
|
||||
INFO: ('192.168.0.119', 50526) - "WebSocket /ws" [accepted]
|
||||
INFO: connection closed
|
||||
INFO: connection open
|
||||
INFO: connection closed
|
||||
INFO: 192.168.0.119:50610 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50611 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: ('192.168.0.119', 50740) - "WebSocket /ws" [accepted]
|
||||
INFO: connection closed
|
||||
INFO: 192.168.0.119:50831 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50832 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
브로드캐스트 오류: list.remove(x): x not in list
|
||||
INFO: 192.168.0.119:50832 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:50831 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51080 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51083 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: ('192.168.0.119', 51048) - "WebSocket /ws" [accepted]
|
||||
INFO: connection closed
|
||||
INFO: connection closed
|
||||
브로드캐스트 오류: list.remove(x): x not in list
|
||||
INFO: 192.168.0.119:51187 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51194 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51205 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51206 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: ('192.168.0.119', 51170) - "WebSocket /ws" [accepted]
|
||||
INFO: connection open
|
||||
INFO: ('192.168.0.119', 51368) - "WebSocket /ws" [accepted]
|
||||
INFO: connection open
|
||||
INFO: 192.168.0.119:51464 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51468 - "GET /api/performance-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51469 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
|
||||
INFO: 192.168.0.119:51470 - "GET /api/system-alerts HTTP/1.1" 200 OK
|
||||
INFO: connection closed
|
||||
INFO: connection closed
|
||||
INFO: connection closed
|
||||
|
|
|
|||
24
status.json
24
status.json
|
|
@ -106,13 +106,13 @@
|
|||
}
|
||||
},
|
||||
"api_stats": {
|
||||
"total_requests": 533,
|
||||
"successful_requests": 533,
|
||||
"total_requests": 618,
|
||||
"successful_requests": 618,
|
||||
"failed_requests": 0,
|
||||
"success_rate": 100.0,
|
||||
"endpoint_usage": {
|
||||
"GET /api/v1/health": 2,
|
||||
"GET /api/v1/stats": 531
|
||||
"GET /api/v1/stats": 616
|
||||
},
|
||||
"endpoint_stats": {
|
||||
"GET /api/v1/health": {
|
||||
|
|
@ -123,21 +123,21 @@
|
|||
"current_concurrent": 0
|
||||
},
|
||||
"GET /api/v1/stats": {
|
||||
"count": 531,
|
||||
"avg_time": 0.0032375192642211913,
|
||||
"min_time": 0.0019419193267822266,
|
||||
"max_time": 0.007139682769775391,
|
||||
"count": 616,
|
||||
"avg_time": 0.0031845998764038087,
|
||||
"min_time": 0.0010221004486083984,
|
||||
"max_time": 0.006818532943725586,
|
||||
"current_concurrent": 0
|
||||
}
|
||||
},
|
||||
"average_response_time": 0.0032355780896728974,
|
||||
"min_response_time": 0.001142740249633789,
|
||||
"average_response_time": 0.00322497431128542,
|
||||
"min_response_time": 0.0010221004486083984,
|
||||
"max_response_time": 0.011610746383666992,
|
||||
"current_concurrent": 0,
|
||||
"max_concurrent": 1,
|
||||
"requests_per_second": 0.02162773814159873,
|
||||
"uptime": 24644.278403520584,
|
||||
"requests_per_second": 0.020095668448163777,
|
||||
"uptime": 30752.89590859413,
|
||||
"recent_errors": []
|
||||
},
|
||||
"timestamp": 1756512049.7289712
|
||||
"timestamp": 1756518158.3465042
|
||||
}
|
||||
Loading…
Reference in New Issue