media-server/app/api/status/index.dspy

42 lines
921 B
Plaintext

# -*- coding:utf-8 -*-
# GET /api/status - 服务状态
import subprocess
result = {
"service": "media-server",
"status": "running",
"gpu": [],
"redis": False
}
# GPU状态
try:
out = subprocess.check_output(
['nvidia-smi', '--query-gpu=index,utilization.gpu,memory.used,memory.total',
'--format=csv,noheader,nounits'],
timeout=5
).decode().strip()
for line in out.split('\n'):
parts = [p.strip() for p in line.split(',')]
result['gpu'].append({
'id': int(parts[0]),
'util': int(parts[1]),
'mem_used': int(parts[2]),
'mem_total': int(parts[3])
})
except Exception:
pass
# Redis
try:
import aioredis
r = await aioredis.from_url('redis://127.0.0.1:6379')
pong = await r.ping()
result['redis'] = pong
await r.close()
except Exception:
pass
return json.dumps(result)