| import asyncio |
| import time |
| from comfy.comfy_types import IO, ComfyNodeABC, InputTypeDict |
| from comfy_api.v0_0_2 import ComfyAPI, ComfyAPISync |
|
|
| api = ComfyAPI() |
| api_sync = ComfyAPISync() |
|
|
|
|
| class TestAsyncProgressUpdate(ComfyNodeABC): |
| """Test node with async VALIDATE_INPUTS.""" |
|
|
| @classmethod |
| def INPUT_TYPES(cls) -> InputTypeDict: |
| return { |
| "required": { |
| "value": (IO.ANY, {}), |
| "sleep_seconds": (IO.FLOAT, {"default": 1.0}), |
| }, |
| } |
|
|
| RETURN_TYPES = (IO.ANY,) |
| FUNCTION = "execute" |
| CATEGORY = "_for_testing/async" |
|
|
| async def execute(self, value, sleep_seconds): |
| start = time.time() |
| expiration = start + sleep_seconds |
| now = start |
| while now < expiration: |
| now = time.time() |
| await api.execution.set_progress( |
| value=(now - start) / sleep_seconds, |
| max_value=1.0, |
| ) |
| await asyncio.sleep(0.01) |
| return (value,) |
|
|
|
|
| class TestSyncProgressUpdate(ComfyNodeABC): |
| """Test node with async VALIDATE_INPUTS.""" |
|
|
| @classmethod |
| def INPUT_TYPES(cls) -> InputTypeDict: |
| return { |
| "required": { |
| "value": (IO.ANY, {}), |
| "sleep_seconds": (IO.FLOAT, {"default": 1.0}), |
| }, |
| } |
|
|
| RETURN_TYPES = (IO.ANY,) |
| FUNCTION = "execute" |
| CATEGORY = "_for_testing/async" |
|
|
| def execute(self, value, sleep_seconds): |
| start = time.time() |
| expiration = start + sleep_seconds |
| now = start |
| while now < expiration: |
| now = time.time() |
| api_sync.execution.set_progress( |
| value=(now - start) / sleep_seconds, |
| max_value=1.0, |
| ) |
| time.sleep(0.01) |
| return (value,) |
|
|
|
|
| API_TEST_NODE_CLASS_MAPPINGS = { |
| "TestAsyncProgressUpdate": TestAsyncProgressUpdate, |
| "TestSyncProgressUpdate": TestSyncProgressUpdate, |
| } |
|
|
| API_TEST_NODE_DISPLAY_NAME_MAPPINGS = { |
| "TestAsyncProgressUpdate": "Async Progress Update Test Node", |
| "TestSyncProgressUpdate": "Sync Progress Update Test Node", |
| } |
|
|