Spaces:
Running
Running
File size: 1,422 Bytes
5005501 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | from sqlalchemy import Column, String, Float, Integer, DateTime, Text, JSON
from sqlalchemy.dialects.postgresql import UUID
from datetime import datetime, timezone
import uuid
from src.config.db import Base
class ProfilingLog(Base):
__tablename__ = "profiling_logs"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
created_at = Column(DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False)
endpoint = Column(String(255), nullable=False)
method = Column(String(10), nullable=False)
model_name = Column(String(100), nullable=True)
total_time_ms = Column(Float, nullable=False)
num_predictions = Column(Integer, nullable=False, default=0)
time_preprocessing_ms = Column(Float, nullable=True)
time_inference_ms = Column(Float, nullable=True)
time_database_ms = Column(Float, nullable=True)
time_serialization_ms = Column(Float, nullable=True)
top_functions = Column(JSON, nullable=True)
ncalls_total = Column(Integer, nullable=True)
ncalls_pandas = Column(Integer, nullable=True)
ncalls_database = Column(Integer, nullable=True)
cpu_percent = Column(Float, nullable=True)
memory_mb = Column(Float, nullable=True)
full_profile = Column(Text, nullable=True)
def __repr__(self):
return f"<ProfilingLog {self.endpoint} - {self.total_time_ms}ms>" |