Spaces:
Running
Running
fix: progress not showing on 2nd extract - recreate queue and re-fetch ref in SSE loop
Browse files
app.py
CHANGED
|
@@ -240,15 +240,8 @@ _thread_local = threading.local()
|
|
| 240 |
|
| 241 |
def _reset_progress(session_id: str):
|
| 242 |
_thread_local.active_session = session_id
|
| 243 |
-
|
| 244 |
-
|
| 245 |
-
# Drain old items
|
| 246 |
-
q = _progress_queues[session_id]
|
| 247 |
-
while not q.empty():
|
| 248 |
-
try:
|
| 249 |
-
q.get_nowait()
|
| 250 |
-
except:
|
| 251 |
-
break
|
| 252 |
|
| 253 |
def _update_progress(stage: str, step: int, total: int):
|
| 254 |
data = {"stage": stage, "step": step, "total": total, "done": False}
|
|
@@ -266,11 +259,6 @@ def _finish_progress():
|
|
| 266 |
_progress_queues[session_id].put_nowait({"done": True})
|
| 267 |
except:
|
| 268 |
pass
|
| 269 |
-
# Schedule cleanup after a short delay (let SSE client receive the done signal)
|
| 270 |
-
def _cleanup():
|
| 271 |
-
time.sleep(5)
|
| 272 |
-
_progress_queues.pop(session_id, None)
|
| 273 |
-
threading.Thread(target=_cleanup, daemon=True).start()
|
| 274 |
|
| 275 |
# Monkey-patch tqdm to intercept progress
|
| 276 |
import tqdm as _tqdm_module
|
|
@@ -321,9 +309,9 @@ async def progress_sse(request: Request):
|
|
| 321 |
_progress_queues[session_id] = queue.Queue()
|
| 322 |
|
| 323 |
async def event_stream():
|
| 324 |
-
q = _progress_queues.get(session_id)
|
| 325 |
timeout_count = 0
|
| 326 |
while True:
|
|
|
|
| 327 |
if q:
|
| 328 |
try:
|
| 329 |
data = q.get_nowait()
|
|
|
|
| 240 |
|
| 241 |
def _reset_progress(session_id: str):
|
| 242 |
_thread_local.active_session = session_id
|
| 243 |
+
# Always recreate the queue (old one may have been consumed or stale)
|
| 244 |
+
_progress_queues[session_id] = queue.Queue()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 245 |
|
| 246 |
def _update_progress(stage: str, step: int, total: int):
|
| 247 |
data = {"stage": stage, "step": step, "total": total, "done": False}
|
|
|
|
| 259 |
_progress_queues[session_id].put_nowait({"done": True})
|
| 260 |
except:
|
| 261 |
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 262 |
|
| 263 |
# Monkey-patch tqdm to intercept progress
|
| 264 |
import tqdm as _tqdm_module
|
|
|
|
| 309 |
_progress_queues[session_id] = queue.Queue()
|
| 310 |
|
| 311 |
async def event_stream():
|
|
|
|
| 312 |
timeout_count = 0
|
| 313 |
while True:
|
| 314 |
+
q = _progress_queues.get(session_id)
|
| 315 |
if q:
|
| 316 |
try:
|
| 317 |
data = q.get_nowait()
|