Ron Au commited on
Commit
7cd74ca
1 Parent(s): 568065a

feat(polling): Avoid redundant polling before ETA

Browse files
Files changed (2) hide show
  1. app.py +1 -0
  2. static/js/index.js +4 -1
app.py CHANGED
@@ -113,6 +113,7 @@ def create_task(background_tasks: BackgroundTasks, new_task: NewTask):
113
  }
114
 
115
  tasks[task_id]["initial_place_in_queue"] = get_place_in_queue(task_id)
 
116
 
117
  background_tasks.add_task(process_task, task_id)
118
 
 
113
  }
114
 
115
  tasks[task_id]["initial_place_in_queue"] = get_place_in_queue(task_id)
116
+ tasks[task_id]["eta"] = calculate_eta(task_id)
117
 
118
  background_tasks.add_task(process_task, task_id)
119
 
static/js/index.js CHANGED
@@ -41,7 +41,10 @@ const generate = async () => {
41
  const timer = durationTimer(durationDisplay);
42
  const timerCleanup = timer().cleanup;
43
 
44
- const completedTask = await longPollTask(task);
 
 
 
45
 
46
  generating = false;
47
  timerCleanup(completedTask);
 
41
  const timer = durationTimer(durationDisplay);
42
  const timerCleanup = timer().cleanup;
43
 
44
+ // Theoretically, keep client waiting only an extra half interval once task is complete
45
+ const interval = 5_000;
46
+ await new Promise((resolve) => setTimeout(resolve, task.eta * 1_000 - interval / 2));
47
+ const completedTask = await longPollTask(task, interval);
48
 
49
  generating = false;
50
  timerCleanup(completedTask);