Zhenzhen_nano_banana2_edit_S2A
Tasks that survive a timeout
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image
- image_url
- task_id
- response
"S2A" stands for sync-to-async, and it's the one-letter difference that saves you real headaches with Comfly_nano_banana2_edit_S2A ("Zhenzhen_nano_banana2_edit_S2A"). It's the same Nano Banana 2 edit node - same models, same fourteen reference images, same 1K/2K/4K - except the generation runs as an async task on the author's server instead of holding your ComfyUI run hostage. When a 4K job takes minutes, or a "slow Google night" makes it take longer than your poll timeout, the async version just... keeps going, and you pick the result up later by task id.
That's the whole pitch, and it's a good one. With the plain Comfly_nano_banana2_edit, if ComfyUI times out you've lost track of the job even if it succeeded. With the S2A node, the job lives in the site's async task list, and the task_id output lets you query it back - including recovering result URLs for images whose download failed mid-transfer, which the author explicitly added.
It's a Google-class node in the T8mars/Comfyui-zhenzhen pack, the "Comfly" API-wrapper family that calls the author's paid reseller service (贞贞的AI工坊, ai.t8star.org). Key goes into apikey directly. Under the hood the difference is just the submission path: same inputs, async queue instead of a blocking poll.
What you set
prompt,mode(text2img/img2img),model,aspect_ratio,image_size(1K/2K/4K) - identical to the non-S2A node.image1–image14- reference images.task_id- an optional input. If you already have a task from a previous run (or a crash), paste it here and the node resumes/fetches it instead of submitting fresh. This is the recovery path.response_format(url/b64_json),seed,skip_error,apikey.
Outputs
image- theIMAGEresult (when the task has completed).image_url- the hosted result.task_id- the important one; keep it, chain it, or re-feed it on retry.response- the raw payload.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
# restart ComfyUI
Or ComfyUI Manager → "Comfyui-zhenzhen", then paste a key from the author's site into apikey.
The honest part
If you generate 4K images regularly, use the S2A node and stop babysitting. It costs the same credits; it just refuses to lose your job to a timeout. The trade is that "instant" runs now have a delay - you submit, go do something else, come back, fetch by task id - so for quick 1K experiments the sync node is still snappier. The pack's usual caveats hold: it's a reseller proxy (your images and prompt leave your machine), and the 4K-on-default-group white-image problem is a Google load issue that the website's premium group setting is the real fix for. This node fixes the "lost my result" failure mode, not the "Google is congested" one.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| mode | COMBO | text2img | 2 options: text2img, img2img |
| model | COMBO | nano-banana-pro | 4 options: nano-banana-2, nano-banana-pro, nano-banana-pro-2k, nano-banana-pro-4k |
| aspect_ratio | COMBO | auto | 11 options: auto, 16:9, 4:3, 4:5, 3:2, 1:1, +5 |
| image_size | COMBO | 2K | 3 options: 1K, 2K, 4K |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — | |
| image10opt | IMAGE | — | |
| image11opt | IMAGE | — | |
| image12opt | IMAGE | — | |
| image13opt | IMAGE | — | |
| image14opt | IMAGE | — | |
| apikeyopt | STRING | — | |
| task_idopt | STRING | — | |
| response_formatopt | COMBO | url | 2 options: url, b64_json |
| seedopt | INT | 00–2147483647 | — |
| skip_erroropt | BOOLEAN | false | 开启后,节点失败时不报错、按旧行为返回默认空结果;关闭时(默认)失败直接抛出错误。 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| image_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |