Allow execution times over 1 second

This commit is contained in:
Andras Schmelczer 2022-07-11 15:38:01 +02:00
parent 7aeb015bb1
commit fb601dfba1
No known key found for this signature in database
GPG key ID: 0EA1BC97D0AB076E

View file

@ -1,5 +1,6 @@
from contextvars import ContextVar from contextvars import ContextVar
from datetime import datetime from datetime import datetime
from time import perf_counter
from types import TracebackType from types import TracebackType
from typing import Any, Dict, Generic, List, Literal, Optional, Type, TypeVar, cast from typing import Any, Dict, Generic, List, Literal, Optional, Type, TypeVar, cast
from uuid import uuid4 from uuid import uuid4
@ -17,7 +18,8 @@ class TracingContext(Generic[T]):
self._models: List[Model] = [] self._models: List[Model] = []
self._values: Dict[str, Any] = {} self._values: Dict[str, Any] = {}
self._trace: Optional[Trace[T]] = None self._trace: Optional[Trace[T]] = None
self._start_time = datetime.utcnow() self._start_datetime = datetime.utcnow()
self._start_time = perf_counter()
self._name = function_name self._name = function_name
def log_value(self, name: str, value: Any) -> None: def log_value(self, name: str, value: Any) -> None:
@ -31,12 +33,12 @@ class TracingContext(Generic[T]):
) -> Trace[T]: ) -> Trace[T]:
assert self._trace is None, "has been already finalised" assert self._trace is None, "has been already finalised"
delta_time = (datetime.utcnow() - self._start_time).microseconds / 1000 delta_time = round((perf_counter() - self._start_time) * 1000, 4)
self._trace = cast( self._trace = cast(
Trace[T], Trace[T],
Trace( # avoid ValueError: "Trace" object has no field "__orig_class__" Trace( # avoid ValueError: "Trace" object has no field "__orig_class__"
trace_id=str(uuid4()), trace_id=str(uuid4()),
created=self._start_time.isoformat(), created=self._start_datetime.isoformat(),
original_execution_time_ms=delta_time, original_execution_time_ms=delta_time,
logged_values=self._values, logged_values=self._values,
models=self._models, models=self._models,