- Import from product_management.get_manager() instead of llmage.accounting - Also loads load_llmage for pricing/discount initialization
30 lines
986 B
Plaintext
30 lines
986 B
Plaintext
# Demucs 任务状态查询
|
|
# GET /demucs/api/demucs-status?task_id=xxx
|
|
task_id = params_kw.task_id
|
|
if not task_id:
|
|
return {"error": "task_id is required"}
|
|
|
|
env = request._run_ns
|
|
longtasks = env.longtasks
|
|
if not longtasks:
|
|
return {"error": "longtasks not available"}
|
|
|
|
task = await longtasks.get_redis_task(task_id)
|
|
if not task or not task.get("created_at"):
|
|
return {"task_id": task_id, "status": "not_found"}
|
|
|
|
status = task.get("status", "unknown")
|
|
result = {"task_id": task_id, "status": status}
|
|
|
|
if status == "SUCCEEDED":
|
|
data = task.get("result", {})
|
|
result["vocals_url"] = data.get("vocals_path", "")
|
|
result["accompaniment_url"] = data.get("accompaniment_path", "")
|
|
result["duration"] = data.get("duration", 0)
|
|
# worker 须在 result 中包含 usage 字段
|
|
result["usage"] = data.get("usage", {"audio_seconds": data.get("duration", 0)})
|
|
elif status == "FAILED":
|
|
result["error"] = task.get("error", str(task.get("result", "")))
|
|
|
|
return result
|