Skip to content

Commit

Permalink
Merge pull request #14421 from lanyeeee/api_thread_safe
Browse files Browse the repository at this point in the history
fix API thread safe issues of txt2img and img2img
  • Loading branch information
AUTOMATIC1111 authored Dec 30, 2023
2 parents cd12c0e + f651405 commit 79c9151
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions modules/api/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,24 @@ def __init__(self, app: FastAPI, queue_lock: Lock):
self.default_script_arg_txt2img = []
self.default_script_arg_img2img = []

txt2img_script_runner = scripts.scripts_txt2img
img2img_script_runner = scripts.scripts_img2img

if not txt2img_script_runner.scripts or not img2img_script_runner.scripts:
ui.create_ui()

if not txt2img_script_runner.scripts:
txt2img_script_runner.initialize_scripts(False)
if not self.default_script_arg_txt2img:
self.default_script_arg_txt2img = self.init_default_script_args(txt2img_script_runner)

if not img2img_script_runner.scripts:
img2img_script_runner.initialize_scripts(True)
if not self.default_script_arg_img2img:
self.default_script_arg_img2img = self.init_default_script_args(img2img_script_runner)



def add_api_route(self, path: str, endpoint, **kwargs):
if shared.cmd_opts.api_auth:
return self.app.add_api_route(path, endpoint, dependencies=[Depends(self.auth)], **kwargs)
Expand Down Expand Up @@ -413,15 +431,10 @@ def text2imgapi(self, txt2imgreq: models.StableDiffusionTxt2ImgProcessingAPI):
task_id = txt2imgreq.force_task_id or create_task_id("txt2img")

script_runner = scripts.scripts_txt2img
if not script_runner.scripts:
script_runner.initialize_scripts(False)
ui.create_ui()

infotext_script_args = {}
self.apply_infotext(txt2imgreq, "txt2img", script_runner=script_runner, mentioned_script_args=infotext_script_args)

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
Expand Down Expand Up @@ -482,15 +495,10 @@ def img2imgapi(self, img2imgreq: models.StableDiffusionImg2ImgProcessingAPI):
mask = decode_base64_to_image(mask)

script_runner = scripts.scripts_img2img
if not script_runner.scripts:
script_runner.initialize_scripts(True)
ui.create_ui()

infotext_script_args = {}
self.apply_infotext(img2imgreq, "img2img", script_runner=script_runner, mentioned_script_args=infotext_script_args)

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
Expand Down

0 comments on commit 79c9151

Please sign in to comment.