Update app.py
Browse files
app.py
CHANGED
|
@@ -50,20 +50,26 @@ class GenerationTimeout(Exception):
|
|
| 50 |
def timeout_handler(signum, frame):
|
| 51 |
raise GenerationTimeout()
|
| 52 |
|
|
|
|
|
|
|
| 53 |
def worker():
|
| 54 |
while True:
|
| 55 |
job_id = job_queue.get()
|
| 56 |
job = jobs.get(job_id)
|
| 57 |
|
| 58 |
-
|
| 59 |
-
|
|
|
|
| 60 |
|
| 61 |
-
|
| 62 |
-
|
| 63 |
|
|
|
|
| 64 |
wav = model.generate([job["prompt"]])[0]
|
| 65 |
|
| 66 |
-
|
|
|
|
|
|
|
| 67 |
|
| 68 |
filename = f"{job_id}.wav"
|
| 69 |
path = os.path.join(OUTPUT_DIR, filename)
|
|
@@ -81,12 +87,6 @@ def worker():
|
|
| 81 |
"file_path": path
|
| 82 |
})
|
| 83 |
|
| 84 |
-
except GenerationTimeout:
|
| 85 |
-
jobs[job_id].update({
|
| 86 |
-
"status": JobStatus.FAILED,
|
| 87 |
-
"error": "Generation timed out (CPU limit)"
|
| 88 |
-
})
|
| 89 |
-
|
| 90 |
except Exception as e:
|
| 91 |
jobs[job_id].update({
|
| 92 |
"status": JobStatus.FAILED,
|
|
|
|
| 50 |
def timeout_handler(signum, frame):
|
| 51 |
raise GenerationTimeout()
|
| 52 |
|
| 53 |
+
MAX_RUNTIME = 600 # 10 minutes (CPU-safe)
|
| 54 |
+
|
| 55 |
def worker():
|
| 56 |
while True:
|
| 57 |
job_id = job_queue.get()
|
| 58 |
job = jobs.get(job_id)
|
| 59 |
|
| 60 |
+
if not job:
|
| 61 |
+
job_queue.task_done()
|
| 62 |
+
continue
|
| 63 |
|
| 64 |
+
start_time = time.time()
|
| 65 |
+
jobs[job_id]["status"] = JobStatus.PROCESSING
|
| 66 |
|
| 67 |
+
try:
|
| 68 |
wav = model.generate([job["prompt"]])[0]
|
| 69 |
|
| 70 |
+
elapsed = time.time() - start_time
|
| 71 |
+
if elapsed > MAX_RUNTIME:
|
| 72 |
+
raise TimeoutError("Generation exceeded max runtime")
|
| 73 |
|
| 74 |
filename = f"{job_id}.wav"
|
| 75 |
path = os.path.join(OUTPUT_DIR, filename)
|
|
|
|
| 87 |
"file_path": path
|
| 88 |
})
|
| 89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
except Exception as e:
|
| 91 |
jobs[job_id].update({
|
| 92 |
"status": JobStatus.FAILED,
|