mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-25 15:15:44 -03:00
feat(updates): add progress logging to refresh service
This commit is contained in:
@@ -214,6 +214,17 @@ class ModelUpdateService:
|
|||||||
"""Refresh update information for every model present in the cache."""
|
"""Refresh update information for every model present in the cache."""
|
||||||
|
|
||||||
local_versions = await self._collect_local_versions(scanner)
|
local_versions = await self._collect_local_versions(scanner)
|
||||||
|
total_models = len(local_versions)
|
||||||
|
if total_models == 0:
|
||||||
|
logger.info(
|
||||||
|
"No %s models found while refreshing update metadata", model_type
|
||||||
|
)
|
||||||
|
return {}
|
||||||
|
|
||||||
|
logger.info(
|
||||||
|
"Refreshing update metadata for %d %s models", total_models, model_type
|
||||||
|
)
|
||||||
|
|
||||||
results: Dict[int, ModelUpdateRecord] = {}
|
results: Dict[int, ModelUpdateRecord] = {}
|
||||||
prefetched: Dict[int, Mapping] = {}
|
prefetched: Dict[int, Mapping] = {}
|
||||||
|
|
||||||
@@ -229,6 +240,17 @@ class ModelUpdateService:
|
|||||||
fetch_targets.append(model_id)
|
fetch_targets.append(model_id)
|
||||||
|
|
||||||
if fetch_targets:
|
if fetch_targets:
|
||||||
|
provider_name = (
|
||||||
|
metadata_provider.__class__.__name__
|
||||||
|
if metadata_provider is not None
|
||||||
|
else "unknown"
|
||||||
|
)
|
||||||
|
logger.info(
|
||||||
|
"Fetching remote metadata for %d %s models via bulk API using %s",
|
||||||
|
len(fetch_targets),
|
||||||
|
model_type,
|
||||||
|
provider_name,
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
prefetched = await self._fetch_model_versions_bulk(
|
prefetched = await self._fetch_model_versions_bulk(
|
||||||
metadata_provider,
|
metadata_provider,
|
||||||
@@ -237,7 +259,10 @@ class ModelUpdateService:
|
|||||||
except NotImplementedError:
|
except NotImplementedError:
|
||||||
prefetched = {}
|
prefetched = {}
|
||||||
|
|
||||||
for model_id, version_ids in local_versions.items():
|
progress_interval = max(1, total_models // 10)
|
||||||
|
for index, (model_id, version_ids) in enumerate(
|
||||||
|
local_versions.items(), start=1
|
||||||
|
):
|
||||||
record = await self._refresh_single_model(
|
record = await self._refresh_single_model(
|
||||||
model_type,
|
model_type,
|
||||||
model_id,
|
model_id,
|
||||||
@@ -248,6 +273,19 @@ class ModelUpdateService:
|
|||||||
)
|
)
|
||||||
if record:
|
if record:
|
||||||
results[model_id] = record
|
results[model_id] = record
|
||||||
|
if index % progress_interval == 0 or index == total_models:
|
||||||
|
logger.info(
|
||||||
|
"Refreshed update metadata for %d/%d %s models",
|
||||||
|
index,
|
||||||
|
total_models,
|
||||||
|
model_type,
|
||||||
|
)
|
||||||
|
logger.info(
|
||||||
|
"Completed update refresh for %d %s models; %d records stored",
|
||||||
|
total_models,
|
||||||
|
model_type,
|
||||||
|
len(results),
|
||||||
|
)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
async def refresh_single_model(
|
async def refresh_single_model(
|
||||||
@@ -486,8 +524,22 @@ class ModelUpdateService:
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
aggregated: Dict[int, Mapping] = {}
|
aggregated: Dict[int, Mapping] = {}
|
||||||
for index in range(0, len(normalized), BATCH_SIZE):
|
total_ids = len(normalized)
|
||||||
chunk = normalized[index : index + BATCH_SIZE]
|
total_batches = (total_ids + BATCH_SIZE - 1) // BATCH_SIZE
|
||||||
|
provider_name = (
|
||||||
|
metadata_provider.__class__.__name__
|
||||||
|
if metadata_provider is not None
|
||||||
|
else "unknown"
|
||||||
|
)
|
||||||
|
for batch_index, start in enumerate(range(0, total_ids, BATCH_SIZE), start=1):
|
||||||
|
chunk = normalized[start : start + BATCH_SIZE]
|
||||||
|
logger.info(
|
||||||
|
"Requesting bulk metadata for %d models (batch %d/%d) from %s",
|
||||||
|
len(chunk),
|
||||||
|
batch_index,
|
||||||
|
total_batches,
|
||||||
|
provider_name,
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
response = await metadata_provider.get_model_versions_bulk(chunk)
|
response = await metadata_provider.get_model_versions_bulk(chunk)
|
||||||
except RateLimitError:
|
except RateLimitError:
|
||||||
@@ -505,6 +557,11 @@ class ModelUpdateService:
|
|||||||
continue
|
continue
|
||||||
if isinstance(value, Mapping):
|
if isinstance(value, Mapping):
|
||||||
aggregated[normalized_key] = value
|
aggregated[normalized_key] = value
|
||||||
|
logger.info(
|
||||||
|
"Completed bulk metadata fetch for %d models using %s",
|
||||||
|
len(aggregated),
|
||||||
|
provider_name,
|
||||||
|
)
|
||||||
return aggregated
|
return aggregated
|
||||||
|
|
||||||
async def _collect_local_versions(self, scanner) -> Dict[int, List[int]]:
|
async def _collect_local_versions(self, scanner) -> Dict[int, List[int]]:
|
||||||
|
|||||||
Reference in New Issue
Block a user