aboutsummaryrefslogtreecommitdiffstats
path: root/modules/call_queue.py
diff options
context:
space:
mode:
authorAUTOMATIC1111 <16777216c@gmail.com>2023-04-29 19:13:48 +0000
committerGitHub <noreply@github.com>2023-04-29 19:13:48 +0000
commit80987c36f9bfa33092ac7c75624b25d839cb2a06 (patch)
tree6f1acaae50a49544a08384b52739df3e2d803a10 /modules/call_queue.py
parent2e78e65a22bfa6b116ae18d12fdcb85ec8acd727 (diff)
parent15c4e78b44e14d70b82dcb5b563251fed7be0766 (diff)
downloadstable-diffusion-webui-gfx803-80987c36f9bfa33092ac7c75624b25d839cb2a06.tar.gz
stable-diffusion-webui-gfx803-80987c36f9bfa33092ac7c75624b25d839cb2a06.tar.bz2
stable-diffusion-webui-gfx803-80987c36f9bfa33092ac7c75624b25d839cb2a06.zip
Merge pull request #7595 from siutin/feature/restore-progress
restore the progress from session lost / tab reload
Diffstat (limited to 'modules/call_queue.py')
-rw-r--r--modules/call_queue.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/modules/call_queue.py b/modules/call_queue.py
index 92097c15..43f6ebe0 100644
--- a/modules/call_queue.py
+++ b/modules/call_queue.py
@@ -4,10 +4,16 @@ import threading
import traceback
import time
+import gradio as gr
from modules import shared, progress
queue_lock = threading.Lock()
+queue_lock_condition = threading.Condition(lock=queue_lock)
+def wrap_session_call(func):
+ def f(request: gr.Request, *args, **kwargs):
+ return func(request, *args, **kwargs)
+ return f
def wrap_queued_call(func):
def f(*args, **kwargs):
@@ -20,29 +26,31 @@ def wrap_queued_call(func):
def wrap_gradio_gpu_call(func, extra_outputs=None):
- def f(*args, **kwargs):
+ def f(request: gr.Request, *args, **kwargs):
+ user = request.username
# if the first argument is a string that says "task(...)", it is treated as a job id
if len(args) > 0 and type(args[0]) == str and args[0][0:5] == "task(" and args[0][-1] == ")":
id_task = args[0]
- progress.add_task_to_queue(id_task)
+ progress.add_task_to_queue(user, id_task)
else:
id_task = None
with queue_lock:
shared.state.begin()
- progress.start_task(id_task)
+ progress.start_task(user, id_task)
try:
res = func(*args, **kwargs)
finally:
- progress.finish_task(id_task)
+ progress.finish_task(user, id_task)
+ progress.set_last_task_result(user, id_task, res)
shared.state.end()
return res
- return wrap_gradio_call(f, extra_outputs=extra_outputs, add_stats=True)
+ return wrap_session_call(wrap_gradio_call(f, extra_outputs=extra_outputs, add_stats=True))
def wrap_gradio_call(func, extra_outputs=None, add_stats=False):