Skip to content

Commit

Permalink
Merge pull request #16604 from Haoming02/ext-updt-parallel
Browse files Browse the repository at this point in the history
Check for Extension Updates in Parallel
  • Loading branch information
w-e-w authored Dec 17, 2024
2 parents e8c3b1f + 9568622 commit 04903af
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
1 change: 1 addition & 0 deletions modules/shared_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@
"disable_mmap_load_safetensors": OptionInfo(False, "Disable memmapping for loading .safetensors files.").info("fixes very slow loading speed in some cases"),
"hide_ldm_prints": OptionInfo(True, "Prevent Stability-AI's ldm/sgm modules from printing noise to console."),
"dump_stacks_on_signal": OptionInfo(False, "Print stack traces before exiting the program with ctrl+c."),
"concurrent_git_fetch_limit": OptionInfo(16, "Number of simultaneous extension update checks ", gr.Slider, {"step": 1, "minimum": 1, "maximum": 100}).info("reduce extension update check time"),
}))

options_templates.update(options_section(('profiler', "Profiler", "system"), {
Expand Down
17 changes: 12 additions & 5 deletions modules/ui_extensions.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import json
import os
from concurrent.futures import ThreadPoolExecutor
import threading
import time
from datetime import datetime, timezone
Expand Down Expand Up @@ -106,18 +107,24 @@ def check_updates(id_task, disable_list):
exts = [ext for ext in extensions.extensions if ext.remote is not None and ext.name not in disabled]
shared.state.job_count = len(exts)

for ext in exts:
shared.state.textinfo = ext.name
lock = threading.Lock()

def _check_update(ext):
try:
ext.check_updates()
except FileNotFoundError as e:
if 'FETCH_HEAD' not in str(e):
raise
except Exception:
errors.report(f"Error checking updates for {ext.name}", exc_info=True)

shared.state.nextjob()
with lock:
errors.report(f"Error checking updates for {ext.name}", exc_info=True)
with lock:
shared.state.textinfo = ext.name
shared.state.nextjob()

with ThreadPoolExecutor(max_workers=max(1, int(shared.opts.concurrent_git_fetch_limit))) as executor:
for ext in exts:
executor.submit(_check_update, ext)

return extension_table(), ""

Expand Down

0 comments on commit 04903af

Please sign in to comment.