diff options
author | lanyeeee <1210347077@qq.com> | 2023-12-30 13:32:22 +0000 |
---|---|---|
committer | lanyeeee <1210347077@qq.com> | 2023-12-30 13:32:22 +0000 |
commit | c069c2c5628728c9506dd034ef98e6335fd5bb34 (patch) | |
tree | ce6a945d481e37905250f27f4fc7cf1ad8e6f691 | |
parent | 00d4a4d4ac75903d8224e9beb1136584dd66fcd8 (diff) | |
download | stable-diffusion-webui-gfx803-c069c2c5628728c9506dd034ef98e6335fd5bb34.tar.gz stable-diffusion-webui-gfx803-c069c2c5628728c9506dd034ef98e6335fd5bb34.tar.bz2 stable-diffusion-webui-gfx803-c069c2c5628728c9506dd034ef98e6335fd5bb34.zip |
add locks to ensure init args are thread-safe
-rw-r--r-- | modules/api/api.py | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/modules/api/api.py b/modules/api/api.py index f0a68c67..45c5c507 100644 --- a/modules/api/api.py +++ b/modules/api/api.py @@ -251,14 +251,10 @@ class Api: self.default_script_arg_txt2img = [] self.default_script_arg_img2img = [] - script_runner = scripts.scripts_img2img - if not script_runner.scripts: - script_runner.initialize_scripts(True) - ui.create_ui() - if not self.default_script_arg_txt2img: - self.default_script_arg_txt2img = self.init_default_script_args(script_runner) - if not self.default_script_arg_img2img: - self.default_script_arg_img2img = self.init_default_script_args(script_runner) + self.txt2img_script_arg_init_lock = Lock() + self.img2img_script_arg_init_lock = Lock() + + def add_api_route(self, path: str, endpoint, **kwargs): if shared.cmd_opts.api_auth: @@ -348,6 +344,12 @@ class Api: task_id = txt2imgreq.force_task_id or create_task_id("txt2img") script_runner = scripts.scripts_txt2img + with self.txt2img_script_arg_init_lock: + if not script_runner.scripts: + script_runner.initialize_scripts(False) + ui.create_ui() + if not self.default_script_arg_txt2img: + self.default_script_arg_txt2img = self.init_default_script_args(script_runner) selectable_scripts, selectable_script_idx = self.get_selectable_script(txt2imgreq.script_name, script_runner) populate = txt2imgreq.copy(update={ # Override __init__ params @@ -407,6 +409,12 @@ class Api: mask = decode_base64_to_image(mask) script_runner = scripts.scripts_img2img + with self.img2img_script_arg_init_lock: + if not script_runner.scripts: + script_runner.initialize_scripts(True) + ui.create_ui() + if not self.default_script_arg_img2img: + self.default_script_arg_img2img = self.init_default_script_args(script_runner) selectable_scripts, selectable_script_idx = self.get_selectable_script(img2imgreq.script_name, script_runner) populate = img2imgreq.copy(update={ # Override __init__ params |