diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-04-29 19:13:48 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-29 19:13:48 +0000 |
commit | 80987c36f9bfa33092ac7c75624b25d839cb2a06 (patch) | |
tree | 6f1acaae50a49544a08384b52739df3e2d803a10 /modules/call_queue.py | |
parent | 2e78e65a22bfa6b116ae18d12fdcb85ec8acd727 (diff) | |
parent | 15c4e78b44e14d70b82dcb5b563251fed7be0766 (diff) | |
download | stable-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.py | 18 |
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):
|