-
Notifications
You must be signed in to change notification settings - Fork 11.3k
Description
NOTES:
- Using ComfyUI Electron App
Other details:
OS: Windows 11
ComfyUI v0.4.0
ComfyUI_frontend v1.33.14
Discord
ComfyOrg
ComfyUI_desktop v0.6.0
EasyUse v1.3.3
LoRA Manager v0.9.10-stable
LoRA-Manager
rgthree-comfy v1.0.2508241658
Custom Node Testing
- I have tried disabling custom nodes and the issue persists (see how to disable custom nodes if you need help)
Expected Behavior
Expected any custom node using print (for example, ShowText from comfyui-custom-scripts) to work even when submitted via the API
Actual Behavior
Node's using print do not work via API, but work via the UI. Have tried with three other custom nodes that use print, they also fail via the API but work via the UI.
Steps to Reproduce
I recently noticed that when submitting jobs via the API, I keep getting OSError: Errno 22] Invalid argument
After removing problematic nodes incrementally, I realized that the common trend between all the nodes that were raising this error was the use of a print statement.
Here's a really simple workflow that reproduces this error
Show Text Example Workflow.json
And the shell script to execute it via API:
#!/bin/bash
COMFYUI_URL=<SET ME TO YOUR URL>
WORKFLOW_FILE=$1
echo "Testing ShowText workflow: $WORKFLOW_FILE"
echo ""
python3 - "$COMFYUI_URL" "$WORKFLOW_FILE" << 'EOF'
import json
import sys
import requests
import time
comfyui_url = sys.argv[1]
workflow_file = sys.argv[2]
# Load workflow
with open(workflow_file, 'r') as f:
workflow = json.load(f)
# Override the string value in node "2" (easy string node)
workflow["2"]["inputs"]["value"] = "Hello from script!"
print("Submitting workflow...")
response = requests.post(f"{comfyui_url}/prompt", json={"prompt": workflow}, timeout=10)
if response.status_code != 200:
print(f"ERROR: {response.status_code}")
print(response.text)
sys.exit(1)
result = response.json()
prompt_id = result.get('prompt_id')
print(f"Submitted. Prompt ID: {prompt_id}")
# Poll for completion
print("Waiting for completion...")
while True:
time.sleep(2)
# Check status
status_response = requests.get(f"{comfyui_url}/prompt/{prompt_id}", timeout=10)
if status_response.status_code == 200:
status = status_response.json()
print(f"\nStatus response: {json.dumps(status, indent=2)}")
# Check for error in status
if status.get('status', {}).get('status_str') == 'error':
print("\n❌ STATUS ERROR DETECTED")
for msg in status.get('status', {}).get('messages', []):
if msg[0] == 'execution_error':
print(f"\nError details: {json.dumps(msg[1], indent=2)}")
sys.exit(1)
# Check history
history = requests.get(f"{comfyui_url}/history/{prompt_id}", timeout=10).json()
print(f"\nHistory response: {json.dumps(history, indent=2)}")
if prompt_id in history:
prompt_data = history[prompt_id]
# Check for error in status within history
if 'status' in prompt_data:
status = prompt_data['status']
if status.get('status_str') == 'error':
print("\n❌ EXECUTION ERROR IN HISTORY:")
for msg in status.get('messages', []):
if msg[0] == 'execution_error':
print(f"\nError details: {json.dumps(msg[1], indent=2)}")
sys.exit(1)
# Check for top-level execution_error
if 'execution_error' in prompt_data:
print("\n❌ EXECUTION ERROR:")
print(json.dumps(prompt_data['execution_error'], indent=2))
sys.exit(1)
else:
print("✓ Completed successfully")
sys.exit(0)
EOF
Debug Logs
Running it:
`./test_showtext.sh "Example of Show Text.json"`
Error that I'm seeing:
Testing ShowText workflow: Example of Show Text.json
Submitting workflow...
Submitted. Prompt ID: 425f64ed-293e-4f89-a1f2-2339dbbc7aab
Waiting for completion...
History response: {
"425f64ed-293e-4f89-a1f2-2339dbbc7aab": {
"prompt": [
136,
"425f64ed-293e-4f89-a1f2-2339dbbc7aab",
{
"1": {
"inputs": {
"text_0": "foo",
"text": [
"2",
0
]
},
"class_type": "ShowText|pysssss",
"_meta": {
"title": "Show Text \ud83d\udc0d"
}
},
"2": {
"inputs": {
"value": "Hello from script!"
},
"class_type": "easy string",
"_meta": {
"title": "String"
}
}
},
{
"create_time": 1765954972625
},
[
"1"
]
],
"outputs": {},
"status": {
"status_str": "error",
"completed": false,
"messages": [
[
"execution_start",
{
"prompt_id": "425f64ed-293e-4f89-a1f2-2339dbbc7aab",
"timestamp": 1765954972626
}
],
[
"execution_cached",
{
"nodes": [
"2"
],
"prompt_id": "425f64ed-293e-4f89-a1f2-2339dbbc7aab",
"timestamp": 1765954972626
}
],
[
"execution_error",
{
"prompt_id": "425f64ed-293e-4f89-a1f2-2339dbbc7aab",
"node_id": "1",
"node_type": "ShowText|pysssss",
"executed": [],
"exception_message": "[Errno 22] Invalid argument\n",
"exception_type": "OSError",
"traceback": [
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 515, in execute\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 329, in get_output_data\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\custom_nodes\\comfyui-lora-manager\\py\\metadata_collector\\metadata_hook.py\", line 165, in async_map_node_over_list_with_metadata\n results = await original_map_node_over_list(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 297, in _async_map_node_over_list\n await process_inputs(input_data_all, 0, input_is_list=input_is_list)\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 291, in process_inputs\n result = f(**inputs)\n ^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\custom_nodes\\comfyui-custom-scripts\\py\\show_text.py\", line 30, in notify\n print(\"Error: extra_pnginfo[0] is not a dict or missing 'workflow' key\")\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 47, in write\n self.__convertor.write(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 177, in write\n self.write_and_convert(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 205, in write_and_convert\n self.write_plain_text(text, cursor, len(text))\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 210, in write_plain_text\n self.wrapped.write(text[start:end])\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 47, in write\n self.__convertor.write(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 177, in write\n self.write_and_convert(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 205, in write_and_convert\n self.write_plain_text(text, cursor, len(text))\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 210, in write_plain_text\n self.wrapped.write(text[start:end])\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\comfyui_manager\\prestartup_script.py\", line 324, in write\n self.sync_write(message)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\comfyui_manager\\prestartup_script.py\", line 345, in sync_write\n original_stdout.flush()\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\app\\logger.py\", line 35, in flush\n super().flush()\n"
],
"current_inputs": {
"text": [
"Hello from script!"
],
"unique_id": [
"1"
],
"extra_pnginfo": [
null
]
},
"current_outputs": [
"1",
"2"
],
"timestamp": 1765954972628
}
]
]
},
"meta": {}
}
}
❌ EXECUTION ERROR IN HISTORY:
Error details: {
"prompt_id": "425f64ed-293e-4f89-a1f2-2339dbbc7aab",
"node_id": "1",
"node_type": "ShowText|pysssss",
"executed": [],
"exception_message": "[Errno 22] Invalid argument\n",
"exception_type": "OSError",
"traceback": [
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 515, in execute\n output_data, output_ui, has_subgraph, has_pending_tasks = await get_output_data(prompt_id, unique_id, obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 329, in get_output_data\n return_values = await _async_map_node_over_list(prompt_id, unique_id, obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb, v3_data=v3_data)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\custom_nodes\\comfyui-lora-manager\\py\\metadata_collector\\metadata_hook.py\", line 165, in async_map_node_over_list_with_metadata\n results = await original_map_node_over_list(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 297, in _async_map_node_over_list\n await process_inputs(input_data_all, 0, input_is_list=input_is_list)\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\execution.py\", line 291, in process_inputs\n result = f(**inputs)\n ^^^^^^^^^^^\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\custom_nodes\\comfyui-custom-scripts\\py\\show_text.py\", line 30, in notify\n print(\"Error: extra_pnginfo[0] is not a dict or missing 'workflow' key\")\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 47, in write\n self.__convertor.write(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 177, in write\n self.write_and_convert(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 205, in write_and_convert\n self.write_plain_text(text, cursor, len(text))\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 210, in write_plain_text\n self.wrapped.write(text[start:end])\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 47, in write\n self.__convertor.write(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 177, in write\n self.write_and_convert(text)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 205, in write_and_convert\n self.write_plain_text(text, cursor, len(text))\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\colorama\\ansitowin32.py\", line 210, in write_plain_text\n self.wrapped.write(text[start:end])\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\comfyui_manager\\prestartup_script.py\", line 324, in write\n self.sync_write(message)\n",
" File \"C:\\Users\\olive\\workspace\\ComfyUI\\.venv\\Lib\\site-packages\\comfyui_manager\\prestartup_script.py\", line 345, in sync_write\n original_stdout.flush()\n",
" File \"C:\\Users\\olive\\AppData\\Local\\Programs\\@comfyorgcomfyui-electron\\resources\\ComfyUI\\app\\logger.py\", line 35, in flush\n super().flush()\n"
],Other
No response