Yang2001 commited on
Commit
b385a26
·
1 Parent(s): bbab8bb

fix: progress not showing on 2nd extract - recreate queue and re-fetch ref in SSE loop

Browse files
Files changed (1) hide show
  1. app.py +3 -15
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
- if session_id not in _progress_queues:
244
- _progress_queues[session_id] = queue.Queue()
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()