chore(api-nodes): increase default timeout for partner API node tasks (#13663)
Some checks failed
Python Linting / Run Ruff (push) Waiting to run
Python Linting / Run Pylint (push) Waiting to run
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.10, [self-hosted Linux], stable) (push) Waiting to run
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.11, [self-hosted Linux], stable) (push) Waiting to run
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.12, [self-hosted Linux], stable) (push) Waiting to run
Full Comfy CI Workflow Runs / test-unix-nightly (12.1, , linux, 3.11, [self-hosted Linux], nightly) (push) Waiting to run
Execution Tests / test (macos-latest) (push) Waiting to run
Execution Tests / test (ubuntu-latest) (push) Waiting to run
Execution Tests / test (windows-latest) (push) Waiting to run
Test server launches without errors / test (push) Waiting to run
Unit Tests / test (macos-latest) (push) Waiting to run
Unit Tests / test (ubuntu-latest) (push) Waiting to run
Unit Tests / test (windows-2022) (push) Waiting to run
Build package / Build Test (3.10) (push) Has been cancelled
Build package / Build Test (3.11) (push) Has been cancelled
Build package / Build Test (3.12) (push) Has been cancelled
Build package / Build Test (3.13) (push) Has been cancelled
Build package / Build Test (3.14) (push) Has been cancelled

Signed-off-by: bigcat88 <bigcat88@icloud.com>
Co-authored-by: Jedrzej Kosinski <kosinkadink1@gmail.com>
This commit is contained in:
Alexander Piskun 2026-05-01 22:48:41 +03:00 committed by GitHub
parent 10b45a71cd
commit cf758bd256
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 3 additions and 21 deletions

View File

@ -1403,7 +1403,6 @@ class ByteDance2TextToVideoNode(IO.ComfyNode):
status_extractor=lambda r: r.status, status_extractor=lambda r: r.status,
price_extractor=_seedance2_price_extractor(model_id, has_video_input=False), price_extractor=_seedance2_price_extractor(model_id, has_video_input=False),
poll_interval=9, poll_interval=9,
max_poll_attempts=180,
) )
return IO.NodeOutput(await download_url_to_video_output(response.content.video_url)) return IO.NodeOutput(await download_url_to_video_output(response.content.video_url))
@ -1585,7 +1584,6 @@ class ByteDance2FirstLastFrameNode(IO.ComfyNode):
status_extractor=lambda r: r.status, status_extractor=lambda r: r.status,
price_extractor=_seedance2_price_extractor(model_id, has_video_input=False), price_extractor=_seedance2_price_extractor(model_id, has_video_input=False),
poll_interval=9, poll_interval=9,
max_poll_attempts=180,
) )
return IO.NodeOutput(await download_url_to_video_output(response.content.video_url)) return IO.NodeOutput(await download_url_to_video_output(response.content.video_url))
@ -1907,7 +1905,6 @@ class ByteDance2ReferenceNode(IO.ComfyNode):
status_extractor=lambda r: r.status, status_extractor=lambda r: r.status,
price_extractor=_seedance2_price_extractor(model_id, has_video_input=has_video_input), price_extractor=_seedance2_price_extractor(model_id, has_video_input=has_video_input),
poll_interval=9, poll_interval=9,
max_poll_attempts=180,
) )
return IO.NodeOutput(await download_url_to_video_output(response.content.video_url)) return IO.NodeOutput(await download_url_to_video_output(response.content.video_url))

View File

@ -178,7 +178,6 @@ class HitPawGeneralImageEnhance(IO.ComfyNode):
status_extractor=lambda x: x.data.status, status_extractor=lambda x: x.data.status,
price_extractor=lambda x: request_price, price_extractor=lambda x: request_price,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
return IO.NodeOutput(await download_url_to_image_tensor(final_response.data.res_url)) return IO.NodeOutput(await download_url_to_image_tensor(final_response.data.res_url))
@ -324,7 +323,6 @@ class HitPawVideoEnhance(IO.ComfyNode):
status_extractor=lambda x: x.data.status, status_extractor=lambda x: x.data.status,
price_extractor=lambda x: request_price, price_extractor=lambda x: request_price,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=320,
) )
return IO.NodeOutput(await download_url_to_video_output(final_response.data.res_url)) return IO.NodeOutput(await download_url_to_video_output(final_response.data.res_url))

View File

@ -276,7 +276,6 @@ async def finish_omni_video_task(cls: type[IO.ComfyNode], response: TaskStatusRe
cls, cls,
ApiEndpoint(path=f"/proxy/kling/v1/videos/omni-video/{response.data.task_id}"), ApiEndpoint(path=f"/proxy/kling/v1/videos/omni-video/{response.data.task_id}"),
response_model=TaskStatusResponse, response_model=TaskStatusResponse,
max_poll_attempts=280,
status_extractor=lambda r: (r.data.task_status if r.data else None), status_extractor=lambda r: (r.data.task_status if r.data else None),
) )
return IO.NodeOutput(await download_url_to_video_output(final_response.data.task_result.videos[0].url)) return IO.NodeOutput(await download_url_to_video_output(final_response.data.task_result.videos[0].url))
@ -3062,7 +3061,6 @@ class KlingVideoNode(IO.ComfyNode):
cls, cls,
ApiEndpoint(path=poll_path), ApiEndpoint(path=poll_path),
response_model=TaskStatusResponse, response_model=TaskStatusResponse,
max_poll_attempts=280,
status_extractor=lambda r: (r.data.task_status if r.data else None), status_extractor=lambda r: (r.data.task_status if r.data else None),
) )
return IO.NodeOutput(await download_url_to_video_output(final_response.data.task_result.videos[0].url)) return IO.NodeOutput(await download_url_to_video_output(final_response.data.task_result.videos[0].url))
@ -3188,7 +3186,6 @@ class KlingFirstLastFrameNode(IO.ComfyNode):
cls, cls,
ApiEndpoint(path=f"/proxy/kling/v1/videos/image2video/{response.data.task_id}"), ApiEndpoint(path=f"/proxy/kling/v1/videos/image2video/{response.data.task_id}"),
response_model=TaskStatusResponse, response_model=TaskStatusResponse,
max_poll_attempts=280,
status_extractor=lambda r: (r.data.task_status if r.data else None), status_extractor=lambda r: (r.data.task_status if r.data else None),
) )
return IO.NodeOutput(await download_url_to_video_output(final_response.data.task_result.videos[0].url)) return IO.NodeOutput(await download_url_to_video_output(final_response.data.task_result.videos[0].url))

View File

@ -230,7 +230,6 @@ class MagnificImageUpscalerCreativeNode(IO.ComfyNode):
status_extractor=lambda x: x.status, status_extractor=lambda x: x.status,
price_extractor=lambda _: price_usd, price_extractor=lambda _: price_usd,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0])) return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0]))
@ -391,7 +390,6 @@ class MagnificImageUpscalerPreciseV2Node(IO.ComfyNode):
status_extractor=lambda x: x.status, status_extractor=lambda x: x.status,
price_extractor=lambda _: price_usd, price_extractor=lambda _: price_usd,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0])) return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0]))
@ -541,7 +539,6 @@ class MagnificImageStyleTransferNode(IO.ComfyNode):
response_model=TaskResponse, response_model=TaskResponse,
status_extractor=lambda x: x.status, status_extractor=lambda x: x.status,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0])) return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0]))
@ -782,7 +779,6 @@ class MagnificImageRelightNode(IO.ComfyNode):
response_model=TaskResponse, response_model=TaskResponse,
status_extractor=lambda x: x.status, status_extractor=lambda x: x.status,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0])) return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0]))
@ -924,7 +920,6 @@ class MagnificImageSkinEnhancerNode(IO.ComfyNode):
response_model=TaskResponse, response_model=TaskResponse,
status_extractor=lambda x: x.status, status_extractor=lambda x: x.status,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0])) return IO.NodeOutput(await download_url_to_image_tensor(final_response.generated[0]))

View File

@ -453,7 +453,6 @@ class TopazVideoEnhance(IO.ComfyNode):
progress_extractor=lambda x: getattr(x, "progress", 0), progress_extractor=lambda x: getattr(x, "progress", 0),
price_extractor=lambda x: (x.estimates.cost[0] * 0.08 if x.estimates and x.estimates.cost[0] else None), price_extractor=lambda x: (x.estimates.cost[0] * 0.08 if x.estimates and x.estimates.cost[0] else None),
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=320,
) )
return IO.NodeOutput(await download_url_to_video_output(final_response.download.url)) return IO.NodeOutput(await download_url_to_video_output(final_response.download.url))

View File

@ -38,7 +38,7 @@ async def execute_task(
cls: type[IO.ComfyNode], cls: type[IO.ComfyNode],
vidu_endpoint: str, vidu_endpoint: str,
payload: TaskCreationRequest | TaskExtendCreationRequest | TaskMultiFrameCreationRequest, payload: TaskCreationRequest | TaskExtendCreationRequest | TaskMultiFrameCreationRequest,
max_poll_attempts: int = 320, max_poll_attempts: int = 480,
) -> list[TaskResult]: ) -> list[TaskResult]:
task_creation_response = await sync_op( task_creation_response = await sync_op(
cls, cls,
@ -1097,7 +1097,6 @@ class ViduExtendVideoNode(IO.ComfyNode):
video_url=await upload_video_to_comfyapi(cls, video, wait_label="Uploading video"), video_url=await upload_video_to_comfyapi(cls, video, wait_label="Uploading video"),
images=[image_url] if image_url else None, images=[image_url] if image_url else None,
), ),
max_poll_attempts=480,
) )
return IO.NodeOutput(await download_url_to_video_output(results[0].url)) return IO.NodeOutput(await download_url_to_video_output(results[0].url))

View File

@ -818,7 +818,6 @@ class WanReferenceVideoApi(IO.ComfyNode):
response_model=VideoTaskStatusResponse, response_model=VideoTaskStatusResponse,
status_extractor=lambda x: x.output.task_status, status_extractor=lambda x: x.output.task_status,
poll_interval=6, poll_interval=6,
max_poll_attempts=280,
) )
return IO.NodeOutput(await download_url_to_video_output(response.output.video_url)) return IO.NodeOutput(await download_url_to_video_output(response.output.video_url))

View File

@ -84,7 +84,6 @@ class WavespeedFlashVSRNode(IO.ComfyNode):
response_model=TaskResultResponse, response_model=TaskResultResponse,
status_extractor=lambda x: "failed" if x.data is None else x.data.status, status_extractor=lambda x: "failed" if x.data is None else x.data.status,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
if final_response.code != 200: if final_response.code != 200:
raise ValueError( raise ValueError(
@ -156,7 +155,6 @@ class WavespeedImageUpscaleNode(IO.ComfyNode):
response_model=TaskResultResponse, response_model=TaskResultResponse,
status_extractor=lambda x: "failed" if x.data is None else x.data.status, status_extractor=lambda x: "failed" if x.data is None else x.data.status,
poll_interval=10.0, poll_interval=10.0,
max_poll_attempts=480,
) )
if final_response.code != 200: if final_response.code != 200:
raise ValueError( raise ValueError(

View File

@ -148,7 +148,7 @@ async def poll_op(
queued_statuses: list[str | int] | None = None, queued_statuses: list[str | int] | None = None,
data: BaseModel | None = None, data: BaseModel | None = None,
poll_interval: float = 5.0, poll_interval: float = 5.0,
max_poll_attempts: int = 160, max_poll_attempts: int = 480,
timeout_per_poll: float = 120.0, timeout_per_poll: float = 120.0,
max_retries_per_poll: int = 10, max_retries_per_poll: int = 10,
retry_delay_per_poll: float = 1.0, retry_delay_per_poll: float = 1.0,
@ -254,7 +254,7 @@ async def poll_op_raw(
queued_statuses: list[str | int] | None = None, queued_statuses: list[str | int] | None = None,
data: dict[str, Any] | BaseModel | None = None, data: dict[str, Any] | BaseModel | None = None,
poll_interval: float = 5.0, poll_interval: float = 5.0,
max_poll_attempts: int = 160, max_poll_attempts: int = 480,
timeout_per_poll: float = 120.0, timeout_per_poll: float = 120.0,
max_retries_per_poll: int = 10, max_retries_per_poll: int = 10,
retry_delay_per_poll: float = 1.0, retry_delay_per_poll: float = 1.0,