mirror of
https://codeberg.org/Freedium-cfd/web.git
synced 2026-03-11 09:04:37 +00:00
39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
import asyncio
|
|
import time
|
|
from functools import wraps
|
|
|
|
from loguru import logger
|
|
|
|
|
|
def trace(func):
|
|
if asyncio.iscoroutinefunction(func):
|
|
logger.trace(f"{func.__name__!r} function is a coroutine")
|
|
|
|
@wraps(func)
|
|
async def wrapper(*args, **kwargs):
|
|
start_ts = time.time()
|
|
logger.trace(f"Calling {func.__name__}() with {args}, {kwargs}")
|
|
original_result = await func(*args, **kwargs)
|
|
logger.trace(f"Result: {original_result}")
|
|
logger.trace(f"Result type: {type(original_result)}")
|
|
duration_ts = time.time() - start_ts
|
|
result = f"{original_result[:42]}..." if type(original_result).__name__ in ["str", "bytes"] else original_result
|
|
logger.trace(f"{func.__name__!r}() returned {result!r} in {duration_ts:.2} seconds")
|
|
return original_result
|
|
|
|
else:
|
|
logger.trace(f"{func.__name__!r} is not a coroutine")
|
|
|
|
@wraps(func)
|
|
def wrapper(*args, **kwargs):
|
|
start_ts = time.time()
|
|
logger.trace(f"Calling {func.__name__}() with {args}, {kwargs}")
|
|
original_result = func(*args, **kwargs)
|
|
logger.trace(f"Result: {original_result}")
|
|
logger.trace(f"Result type: {type(original_result)}")
|
|
duration_ts = time.time() - start_ts
|
|
result = f"{original_result[:42]}..." if type(original_result).__name__ in ["str", "bytes"] else original_result
|
|
logger.trace(f"{func.__name__!r}() returned {result!r} in {duration_ts:.2} seconds")
|
|
return original_result
|
|
|
|
return wrapper
|