diff --git a/comfy_api/latest/__init__.py b/comfy_api/latest/__init__.py index b0fa14ff6..1a1b6d162 100644 --- a/comfy_api/latest/__init__.py +++ b/comfy_api/latest/__init__.py @@ -106,6 +106,42 @@ class Types: MESH = MESH VOXEL = VOXEL + +class Caching: + """ + External cache provider API for distributed caching. + + Enables sharing cached results across multiple ComfyUI instances + (e.g., Kubernetes pods) without monkey-patching internal methods. + + Example usage: + from comfy_api.latest import Caching + + class MyRedisProvider(Caching.CacheProvider): + def on_lookup(self, context): + # Check Redis for cached result + ... + + def on_store(self, context, value): + # Store to Redis (can be async internally) + ... + + Caching.register_provider(MyRedisProvider()) + """ + # Import from comfy_execution.cache_provider (source of truth) + from comfy_execution.cache_provider import ( + CacheProvider, + CacheContext, + CacheValue, + register_cache_provider as register_provider, + unregister_cache_provider as unregister_provider, + get_cache_providers as get_providers, + has_cache_providers as has_providers, + clear_cache_providers as clear_providers, + estimate_value_size, + ) + + ComfyAPI = ComfyAPI_latest # Create a synchronous version of the API @@ -125,6 +161,7 @@ __all__ = [ "Input", "InputImpl", "Types", + "Caching", "ComfyExtension", "io", "IO", diff --git a/comfy_execution/cache_provider.py b/comfy_execution/cache_provider.py index 69ae9a99c..63fba5632 100644 --- a/comfy_execution/cache_provider.py +++ b/comfy_execution/cache_provider.py @@ -4,6 +4,9 @@ External Cache Provider API for distributed caching. This module provides a public API for external cache providers, enabling distributed caching across multiple ComfyUI instances (e.g., Kubernetes pods). +Public API is also available via: + from comfy_api.latest import Caching + Example usage: from comfy_execution.cache_provider import ( CacheProvider, CacheContext, CacheValue, register_cache_provider @@ -120,7 +123,7 @@ class CacheProvider(ABC): Common filters: - By class_type: Only expensive nodes (KSampler, VAEDecode) - - By size: Skip small values (< 1MB) + - By size: Skip large values to reduce network overhead Default: Returns True (cache everything). """