42 lines
921 B
Plaintext
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)
|