Skip to content

Commit

Permalink
Restart: only do restart if running via the wrapper script
Browse files Browse the repository at this point in the history
  • Loading branch information
akx committed Jun 5, 2023
1 parent 9781f31 commit 46a5bd6
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 13 deletions.
23 changes: 23 additions & 0 deletions modules/restart.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import os
from pathlib import Path

from modules.paths_internal import script_path


def is_restartable() -> bool:
"""
Return True if the webui is restartable (i.e. there is something watching to restart it with)
"""
return bool(os.environ.get('SD_WEBUI_RESTART'))


def restart_program() -> None:
"""creates file tmp/restart and immediately stops the process, which webui.bat/webui.sh interpret as a command to start webui again"""

(Path(script_path) / "tmp" / "restart").touch()

stop_program()


def stop_program() -> None:
os._exit(0)
9 changes: 0 additions & 9 deletions modules/shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -853,12 +853,3 @@ def walk_files(path, allowed_extensions=None):
continue

yield os.path.join(root, filename)


def restart_program():
"""creates file tmp/restart and immediately stops the process, which webui.bat/webui.sh interpret as a command to start webui again"""

with open(os.path.join(script_path, "tmp", "restart"), "w"):
pass

os._exit(0)
11 changes: 8 additions & 3 deletions modules/ui_extensions.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import shutil
import errno

from modules import extensions, shared, paths, config_states, errors
from modules import extensions, shared, paths, config_states, errors, restart
from modules.paths_internal import config_states_dir
from modules.call_queue import wrap_gradio_gpu_call

Expand Down Expand Up @@ -49,7 +49,11 @@ def apply_and_restart(disable_list, update_list, disable_all):
shared.opts.disabled_extensions = disabled
shared.opts.disable_all_extensions = disable_all
shared.opts.save(shared.config_filename)
shared.restart_program()

if restart.is_restartable():
restart.restart_program()
else:
restart.stop_program()


def save_config_state(name):
Expand Down Expand Up @@ -508,7 +512,8 @@ def create_ui():
with gr.TabItem("Installed", id="installed"):

with gr.Row(elem_id="extensions_installed_top"):
apply = gr.Button(value="Apply and restart UI", variant="primary")
apply_label = ("Apply and restart UI" if restart.is_restartable() else "Apply and quit")
apply = gr.Button(value=apply_label, variant="primary")
check = gr.Button(value="Check for updates")
extensions_disable_all = gr.Radio(label="Disable all extensions", choices=["none", "extra", "all"], value=shared.opts.disable_all_extensions, elem_id="extensions_disable_all")
extensions_disabled_list = gr.Text(elem_id="extensions_disabled_list", visible=False).style(container=False)
Expand Down
2 changes: 1 addition & 1 deletion webui.bat
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
if not defined PYTHON (set PYTHON=python)
if not defined VENV_DIR (set "VENV_DIR=%~dp0%venv")


set SD_WEBUI_RESTART=tmp/restart
set ERROR_REPORTING=FALSE

mkdir tmp 2>NUL
Expand Down
1 change: 1 addition & 0 deletions webui.sh
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ prepare_tcmalloc() {
}

KEEP_GOING=1
export SD_WEBUI_RESTART=tmp/restart
while [[ "$KEEP_GOING" -eq "1" ]]; do
if [[ ! -z "${ACCELERATE}" ]] && [ ${ACCELERATE}="True" ] && [ -x "$(command -v accelerate)" ]; then
printf "\n%s\n" "${delimiter}"
Expand Down

0 comments on commit 46a5bd6

Please sign in to comment.