Files
AILab/bbit_ai/app/utils/MyUtils.py
T
2026-02-04 13:58:18 +08:00

103 lines
2.1 KiB
Python

import asyncio
import platform
import socket
import threading
from datetime import datetime
import psutil
import pytz
# 后台操作
def async_new_task(func, *args, **kwargs):
threading.Thread(target=func, args=args, kwargs=kwargs, daemon=True).start()
async def async_task(func, *args, **kwargs):
return await asyncio.to_thread(func, *args, **kwargs)
def format_datetime(dt: datetime, tz="Asia/Shanghai"):
if dt.tzinfo is None:
dt = pytz.UTC.localize(dt)
tz_obj = pytz.timezone(tz)
dt = dt.astimezone(tz_obj)
return dt.strftime("%Y-%m-%d %H:%M:%S")
def safe_round(value, ndigits=2, default=None):
return round(value, ndigits) if value is not None else default
def build_dept_tree(depts):
dept_map = {d["id"]: d for d in depts}
roots = []
for d in depts:
pid = d["pid"]
if pid and pid in dept_map:
dept_map[pid]["children"].append(d)
else:
# pid 为 0 或不存在 → 顶层
roots.append(d)
return roots
def build_menu_tree(items):
item_map = {item["id"]: item for item in items}
tree = []
for item in items:
pid = item["pid"]
if pid and pid in item_map:
item_map[pid]["children"].append(item)
else:
tree.append(item)
return tree
from uuid import UUID
def is_valid_uuid(value: str):
try:
UUID(value)
return True
except:
return False
def get_local_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip = s.getsockname()[0]
s.close()
return ip
except Exception:
return "127.0.0.1"
def get_mac_address():
# 获取第一个网卡的 MAC
for iface, addrs in psutil.net_if_addrs().items():
for addr in addrs:
if addr.family == psutil.AF_LINK:
return addr.address
return "00:00:00:00:00:00"
def get_cpu_info():
return platform.processor()
def get_memory_total():
return psutil.virtual_memory().total
def get_disk_total():
return psutil.disk_usage("/").total