Spaces:
Sleeping
Sleeping
朱东升
commited on
Commit
·
3ae05a4
1
Parent(s):
a3558a8
update12
Browse files
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 |
-
|
|
|
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':
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|