Skip to content

Commit

Permalink
limit number of simultaneous updates
Browse files Browse the repository at this point in the history
shared.opts.concurrent_git_fetch_limit
  • Loading branch information
w-e-w committed Oct 29, 2024
1 parent df74c3c commit 9568622
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 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
25 changes: 12 additions & 13 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,26 +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)

def _check_update(ext):
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)

threads = []
for ext in exts:
thread = threading.Thread(target=_check_update, args=(ext,))
thread.start()
threads.append(thread)

for thread in threads:
thread.join()
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 9568622

Please sign in to comment.