Upload api.py
Browse files
api.py
CHANGED
|
@@ -112,16 +112,16 @@ def get_job_status(job_id: str):
|
|
| 112 |
|
| 113 |
job = jobs[job_id]
|
| 114 |
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
}
|
| 118 |
-
|
| 119 |
-
#
|
| 120 |
-
if job
|
| 121 |
response["results"] = job["results"]
|
| 122 |
-
|
| 123 |
-
#
|
| 124 |
-
|
| 125 |
response["error"] = job["error"]
|
| 126 |
|
| 127 |
return response
|
|
@@ -182,14 +182,14 @@ def process_video_job(job_id: str):
|
|
| 182 |
for char in characters:
|
| 183 |
print(f"[{job_id}] - {char['name']}: {char['num_faces']} caras")
|
| 184 |
|
| 185 |
-
#
|
| 186 |
-
job["status"] = JobStatus.DONE
|
| 187 |
job["results"] = {
|
| 188 |
"characters": characters,
|
| 189 |
"num_characters": len(characters),
|
| 190 |
"analysis_path": analysis_path,
|
| 191 |
"base_dir": str(base)
|
| 192 |
}
|
|
|
|
| 193 |
|
| 194 |
print(f"[{job_id}] DEBUG - job['results'] guardado: {job['results']}")
|
| 195 |
|
|
@@ -204,7 +204,7 @@ def process_video_job(job_id: str):
|
|
| 204 |
for sub in ("sources", "faces", "voices", "backgrounds"):
|
| 205 |
(base / sub).mkdir(parents=True, exist_ok=True)
|
| 206 |
|
| 207 |
-
|
| 208 |
job["results"] = {
|
| 209 |
"characters": [],
|
| 210 |
"num_characters": 0,
|
|
@@ -216,6 +216,7 @@ def process_video_job(job_id: str):
|
|
| 216 |
},
|
| 217 |
"warning": f"Detección falló, usando modo fallback: {str(e_detect)}"
|
| 218 |
}
|
|
|
|
| 219 |
|
| 220 |
print(f"[{job_id}] ✓ Job completado exitosamente")
|
| 221 |
|
|
|
|
| 112 |
|
| 113 |
job = jobs[job_id]
|
| 114 |
|
| 115 |
+
# Normalizar el estado a string
|
| 116 |
+
status_value = job["status"].value if isinstance(job["status"], JobStatus) else str(job["status"])
|
| 117 |
+
response = {"status": status_value}
|
| 118 |
+
|
| 119 |
+
# Incluir resultados si existen (evita condiciones de carrera)
|
| 120 |
+
if job.get("results") is not None:
|
| 121 |
response["results"] = job["results"]
|
| 122 |
+
|
| 123 |
+
# Incluir error si existe
|
| 124 |
+
if job.get("error"):
|
| 125 |
response["error"] = job["error"]
|
| 126 |
|
| 127 |
return response
|
|
|
|
| 182 |
for char in characters:
|
| 183 |
print(f"[{job_id}] - {char['name']}: {char['num_faces']} caras")
|
| 184 |
|
| 185 |
+
# Guardar resultados primero y luego marcar como completado (evita carreras)
|
|
|
|
| 186 |
job["results"] = {
|
| 187 |
"characters": characters,
|
| 188 |
"num_characters": len(characters),
|
| 189 |
"analysis_path": analysis_path,
|
| 190 |
"base_dir": str(base)
|
| 191 |
}
|
| 192 |
+
job["status"] = JobStatus.DONE
|
| 193 |
|
| 194 |
print(f"[{job_id}] DEBUG - job['results'] guardado: {job['results']}")
|
| 195 |
|
|
|
|
| 204 |
for sub in ("sources", "faces", "voices", "backgrounds"):
|
| 205 |
(base / sub).mkdir(parents=True, exist_ok=True)
|
| 206 |
|
| 207 |
+
# Guardar resultados de fallback y luego marcar como completado
|
| 208 |
job["results"] = {
|
| 209 |
"characters": [],
|
| 210 |
"num_characters": 0,
|
|
|
|
| 216 |
},
|
| 217 |
"warning": f"Detección falló, usando modo fallback: {str(e_detect)}"
|
| 218 |
}
|
| 219 |
+
job["status"] = JobStatus.DONE
|
| 220 |
|
| 221 |
print(f"[{job_id}] ✓ Job completado exitosamente")
|
| 222 |
|