朱东升 commited on
Commit
3ae05a4
·
1 Parent(s): a3558a8
Files changed (1) hide show
  1. app.py +36 -4
app.py CHANGED
@@ -38,7 +38,7 @@ def queue_processor():
38
  """处理队列中的任务"""
39
  while running:
40
  try:
41
- # 从队列中获取任务,如果队列为空等待0.1
42
  task_id, input_data, request_time = task_queue.get(timeout=0.1)
43
  with lock:
44
  task_status[task_id]['status'] = 'processing'
@@ -276,16 +276,35 @@ def get_queue_status():
276
  waiting_tasks = sum(1 for status in task_status.values() if status['status'] == 'queued')
277
 
278
  recent_tasks = task_history[-5:] if task_history else []
279
- avg_time = 0
 
280
  if recent_tasks:
281
  avg_time = sum(task['process_time'] for task in recent_tasks) / len(recent_tasks)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
282
 
283
  return {
284
  'queue_size': queue_size,
285
  'active_tasks': active_tasks,
286
  'waiting_tasks': waiting_tasks,
287
  'worker_threads': worker_threads,
288
- 'estimated_wait': waiting_tasks * avg_time if avg_time > 0 else waiting_tasks * 5,
 
289
  'recent_tasks': recent_tasks
290
  }
291
 
@@ -356,7 +375,16 @@ def ui_check_status(task_id):
356
 
357
  if status['status'] == 'queued':
358
  queue_info = get_queue_status()
359
- est_wait = queue_info['estimated_wait'] / queue_info['waiting_tasks'] * status['queue_position'] if queue_info['waiting_tasks'] > 0 else 0
 
 
 
 
 
 
 
 
 
360
 
361
  return f"""
362
  <div class="status-card">
@@ -425,6 +453,9 @@ def ui_get_queue_info():
425
  </tr>
426
  """
427
 
 
 
 
428
  return f"""
429
  <div class="queue-info-card">
430
  <h3>队列状态</h3>
@@ -444,6 +475,7 @@ def ui_get_queue_info():
444
  </div>
445
 
446
  <div class="wait-time">
 
447
  <p><b>当前预计等待时间:</b> {format_time(queue_info['estimated_wait'])}</p>
448
  </div>
449
 
 
38
  """处理队列中的任务"""
39
  while running:
40
  try:
41
+ # 从队列中获取任务,如果队列为空等待0.1
42
  task_id, input_data, request_time = task_queue.get(timeout=0.1)
43
  with lock:
44
  task_status[task_id]['status'] = 'processing'
 
276
  waiting_tasks = sum(1 for status in task_status.values() if status['status'] == 'queued')
277
 
278
  recent_tasks = task_history[-5:] if task_history else []
279
+
280
+ # 计算平均处理时间,如果没有历史数据,使用默认值
281
  if recent_tasks:
282
  avg_time = sum(task['process_time'] for task in recent_tasks) / len(recent_tasks)
283
+ # 确保平均时间至少为1秒
284
+ avg_time = max(avg_time, 1.0)
285
+ else:
286
+ # 没有历史数据时的默认平均处理时间(秒)
287
+ avg_time = 5.0
288
+
289
+ # 估算等待时间
290
+ # 如果有活跃任务,假设它们还需要完成一半的平均时间
291
+ active_time = (active_tasks * avg_time) / 2 if active_tasks > 0 else 0
292
+ # 排队任务的总时间
293
+ queue_time = waiting_tasks * avg_time
294
+ # 总预计等待时间
295
+ estimated_wait = active_time + queue_time
296
+
297
+ # 确保即使没有任务也返回有效值
298
+ if estimated_wait == 0 and (waiting_tasks > 0 or active_tasks > 0):
299
+ estimated_wait = 1.0
300
 
301
  return {
302
  'queue_size': queue_size,
303
  'active_tasks': active_tasks,
304
  'waiting_tasks': waiting_tasks,
305
  'worker_threads': worker_threads,
306
+ 'estimated_wait': estimated_wait,
307
+ 'avg_process_time': avg_time,
308
  'recent_tasks': recent_tasks
309
  }
310
 
 
375
 
376
  if status['status'] == 'queued':
377
  queue_info = get_queue_status()
378
+
379
+ # 计算这个特定任务的等待时间
380
+ avg_time = queue_info.get('avg_process_time', 5.0)
381
+ active_time = (queue_info['active_tasks'] * avg_time) / 2 if queue_info['active_tasks'] > 0 else 0
382
+
383
+ # 计算此任务前面的任务数
384
+ tasks_ahead = status['queue_position'] - 1
385
+
386
+ # 此任务的估计等待时间 = 活跃任务完成时间 + 前面排队任务时间
387
+ est_wait = active_time + (tasks_ahead * avg_time)
388
 
389
  return f"""
390
  <div class="status-card">
 
453
  </tr>
454
  """
455
 
456
+ # 添加平均处理时间显示
457
+ avg_time_html = f"""<p><b>平均处理时间:</b> {format_time(queue_info.get('avg_process_time', 0))}</p>"""
458
+
459
  return f"""
460
  <div class="queue-info-card">
461
  <h3>队列状态</h3>
 
475
  </div>
476
 
477
  <div class="wait-time">
478
+ {avg_time_html}
479
  <p><b>当前预计等待时间:</b> {format_time(queue_info['estimated_wait'])}</p>
480
  </div>
481