WIP: 分离出逻辑pip包
This commit is contained in:
40
src/BowongModalFunctions/utils/SentryUtils.py
Normal file
40
src/BowongModalFunctions/utils/SentryUtils.py
Normal file
@@ -0,0 +1,40 @@
|
||||
from typing import Optional, Tuple, Any
|
||||
import psutil
|
||||
import sentry_sdk
|
||||
|
||||
|
||||
class SentryUtils:
|
||||
@staticmethod
|
||||
def capture_hardware_info() -> Tuple[Any, int, Any]:
|
||||
cpu_freq = psutil.cpu_freq()
|
||||
cpu_count = psutil.cpu_count()
|
||||
mem = psutil.virtual_memory()
|
||||
|
||||
return (cpu_freq, cpu_count, mem)
|
||||
|
||||
@staticmethod
|
||||
def sentry_tracker(sentry_trace_id: Optional[str], sentry_baggage: Optional[str],
|
||||
op: Optional[str], name: Optional[str], fn_id: str):
|
||||
def decorator(func):
|
||||
def wrapper(*args, **kwargs):
|
||||
if sentry_trace_id and sentry_baggage:
|
||||
transaction = sentry_sdk.continue_trace(environ_or_headers={"sentry-trace": sentry_trace_id,
|
||||
"baggage": sentry_baggage, })
|
||||
else:
|
||||
transaction = sentry_sdk.start_transaction(op='modal.function', name='Modal Function直接调用')
|
||||
with transaction:
|
||||
with transaction.start_child(op=op, name=name) as span:
|
||||
cpu_freq, cpu_count, mem = SentryUtils.capture_hardware_info()
|
||||
total_mb = mem.total >> 20
|
||||
# available_mb = mem.available >> 20
|
||||
sentry_sdk.set_tag('fn.id', fn_id)
|
||||
span.set_data('cpu.count', cpu_count)
|
||||
span.set_data('cpu.frequency', f"{cpu_freq.current / 1000:.2f} GHz")
|
||||
span.set_data('memory.available', f"{total_mb} Mb")
|
||||
result = func(*args, **kwargs)
|
||||
return result
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorator
|
||||
|
||||
Reference in New Issue
Block a user