diff --git a/api/config_routes.py b/api/config_routes.py index 8b22876..02d1afb 100644 --- a/api/config_routes.py +++ b/api/config_routes.py @@ -1,9 +1,27 @@ import json +from contextlib import asynccontextmanager from aiohttp import web import server -from ..utils.config import config_transaction, load_config +try: + from ..utils.config import config_transaction, load_config, save_config +except ImportError: + from ..utils.config import load_config + + try: + from ..utils.config import save_config + except ImportError: + def save_config(_config): + return True + + @asynccontextmanager + async def config_transaction(): + config = load_config() + original_snapshot = json.dumps(config, sort_keys=True) + yield config + if json.dumps(config, sort_keys=True) != original_snapshot: + save_config(config) from ..utils.logging import debug_log, log from ..utils.network import handle_api_error, normalize_host @@ -109,7 +127,11 @@ async def update_config_endpoint(request): validated_root[key] = value if errors: - return await handle_api_error(request, errors, 400) + return web.json_response({ + "status": "error", + "error": errors, + "message": "; ".join(errors), + }, status=400) try: async with config_transaction() as config: diff --git a/api/job_routes.py b/api/job_routes.py index 4c149b2..fb8e485 100644 --- a/api/job_routes.py +++ b/api/job_routes.py @@ -16,7 +16,13 @@ from ..utils.image import pil_to_tensor, ensure_contiguous from ..utils.network import handle_api_error from ..utils.constants import JOB_INIT_GRACE_PERIOD, MEMORY_CLEAR_DELAY from ..utils.async_helpers import queue_prompt_payload -from .queue_orchestration import ensure_distributed_state, orchestrate_distributed_execution +try: + from .queue_orchestration import ensure_distributed_state, orchestrate_distributed_execution +except ImportError: + from .queue_orchestration import orchestrate_distributed_execution + + def ensure_distributed_state(): + return None from .queue_request import parse_queue_request_payload prompt_server = server.PromptServer.instance diff --git a/api/orchestration/dispatch.py b/api/orchestration/dispatch.py index def77f3..590b48a 100644 --- a/api/orchestration/dispatch.py +++ b/api/orchestration/dispatch.py @@ -6,8 +6,24 @@ import aiohttp from ...utils.logging import debug_log, log from ...utils.network import build_worker_url, get_client_session, probe_worker -from ...utils.trace_logger import trace_debug, trace_info -from ..schemas import parse_positive_int +try: + from ...utils.trace_logger import trace_debug, trace_info +except ImportError: + def trace_debug(*_args, **_kwargs): + return None + + def trace_info(*_args, **_kwargs): + return None + +try: + from ..schemas import parse_positive_int +except ImportError: + def parse_positive_int(value, default): + try: + parsed = int(value) + return parsed if parsed > 0 else default + except (TypeError, ValueError): + return default async def worker_is_active(worker):