Compare commits
12
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0582d1d869 | ||
|
|
ce073a86c7 | ||
|
|
3a85a1edf2 | ||
|
|
369c1456a9 | ||
|
|
01e323b7e2 | ||
|
|
db684d044a | ||
|
|
8e12803ea1 | ||
|
|
7585d5049a | ||
|
|
772bb09240 | ||
|
|
9a7e18e651 | ||
|
|
a02c8d237f | ||
|
|
2ba5a0ff3d |
@@ -4,12 +4,15 @@ import numpy as np
|
|||||||
import torch
|
import torch
|
||||||
import folder_paths
|
import folder_paths
|
||||||
|
|
||||||
|
|
||||||
class AnyType(str):
|
class AnyType(str):
|
||||||
def __ne__(self, __value: object) -> bool:
|
def __ne__(self, __value: object) -> bool:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
WILDCARD = AnyType("*")
|
WILDCARD = AnyType("*")
|
||||||
|
|
||||||
|
|
||||||
class ComfyUIDeployExternalLora:
|
class ComfyUIDeployExternalLora:
|
||||||
@classmethod
|
@classmethod
|
||||||
def INPUT_TYPES(s):
|
def INPUT_TYPES(s):
|
||||||
@@ -22,6 +25,10 @@ class ComfyUIDeployExternalLora:
|
|||||||
},
|
},
|
||||||
"optional": {
|
"optional": {
|
||||||
"default_lora_name": (folder_paths.get_filename_list("loras"),),
|
"default_lora_name": (folder_paths.get_filename_list("loras"),),
|
||||||
|
"lora_save_name": ( # if `default_lora_name` is a link to download a file, we will attempt to save it with this name
|
||||||
|
"STRING",
|
||||||
|
{"multiline": False, "default": ""},
|
||||||
|
),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,17 +39,24 @@ class ComfyUIDeployExternalLora:
|
|||||||
|
|
||||||
CATEGORY = "deploy"
|
CATEGORY = "deploy"
|
||||||
|
|
||||||
def run(self, input_id, default_lora_name=None):
|
def run(self, input_id, default_lora_name=None, lora_save_name=None):
|
||||||
import requests
|
import requests
|
||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
if default_lora_name.startswith("http"):
|
if default_lora_name.startswith("http"):
|
||||||
unique_filename = str(uuid.uuid4()) + ".safetensors"
|
if lora_save_name:
|
||||||
print(unique_filename)
|
existing_loras = folder_paths.get_filename_list("loras")
|
||||||
|
# Check if lora_save_name exists in the list
|
||||||
|
if lora_save_name in existing_loras:
|
||||||
|
print(f"using lora: {lora_save_name}")
|
||||||
|
return (lora_save_name,)
|
||||||
|
else:
|
||||||
|
lora_save_name = str(uuid.uuid4()) + ".safetensors"
|
||||||
|
print(lora_save_name)
|
||||||
print(folder_paths.folder_names_and_paths["loras"][0][0])
|
print(folder_paths.folder_names_and_paths["loras"][0][0])
|
||||||
destination_path = os.path.join(
|
destination_path = os.path.join(
|
||||||
folder_paths.folder_names_and_paths["loras"][0][0], unique_filename
|
folder_paths.folder_names_and_paths["loras"][0][0], lora_save_name
|
||||||
)
|
)
|
||||||
print(destination_path)
|
print(destination_path)
|
||||||
print("Downloading external lora - " + input_id + " to " + destination_path)
|
print("Downloading external lora - " + input_id + " to " + destination_path)
|
||||||
@@ -53,7 +67,7 @@ class ComfyUIDeployExternalLora:
|
|||||||
)
|
)
|
||||||
with open(destination_path, "wb") as out_file:
|
with open(destination_path, "wb") as out_file:
|
||||||
out_file.write(response.content)
|
out_file.write(response.content)
|
||||||
return (unique_filename,)
|
return (lora_save_name,)
|
||||||
else:
|
else:
|
||||||
print(f"using lora: {default_lora_name}")
|
print(f"using lora: {default_lora_name}")
|
||||||
return (default_lora_name,)
|
return (default_lora_name,)
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
import folder_paths
|
||||||
|
from PIL import Image, ImageOps
|
||||||
|
import numpy as np
|
||||||
|
import torch
|
||||||
|
import json
|
||||||
|
|
||||||
|
class ComfyUIDeployExternalTextList:
|
||||||
|
@classmethod
|
||||||
|
def INPUT_TYPES(s):
|
||||||
|
return {
|
||||||
|
"required": {
|
||||||
|
"input_id": (
|
||||||
|
"STRING",
|
||||||
|
{"multiline": False, "default": 'input_text_list'},
|
||||||
|
),
|
||||||
|
"text": (
|
||||||
|
"STRING",
|
||||||
|
{"multiline": True, "default": "[]"},
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RETURN_TYPES = ("STRING",)
|
||||||
|
RETURN_NAMES = ("text",)
|
||||||
|
|
||||||
|
OUTPUT_IS_LIST = (True,)
|
||||||
|
|
||||||
|
FUNCTION = "run"
|
||||||
|
|
||||||
|
CATEGORY = "text"
|
||||||
|
|
||||||
|
def run(self, input_id, text=None):
|
||||||
|
text_list = []
|
||||||
|
try:
|
||||||
|
text_list = json.loads(text) # Assuming text is a JSON array string
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error processing images: {e}")
|
||||||
|
pass
|
||||||
|
return [text_list]
|
||||||
|
|
||||||
|
|
||||||
|
NODE_CLASS_MAPPINGS = {"ComfyUIDeployExternalTextList": ComfyUIDeployExternalTextList}
|
||||||
|
NODE_DISPLAY_NAME_MAPPINGS = {"ComfyUIDeployExternalTextList": "External Text List (ComfyUI Deploy)"}
|
||||||
+6
-5
@@ -108,7 +108,8 @@ def log_span(name):
|
|||||||
if use_logfire:
|
if use_logfire:
|
||||||
with logger.span(name):
|
with logger.span(name):
|
||||||
yield
|
yield
|
||||||
# else:
|
else:
|
||||||
|
yield
|
||||||
# logger.info(f"Start: {name}")
|
# logger.info(f"Start: {name}")
|
||||||
# yield
|
# yield
|
||||||
# logger.info(f"End: {name}")
|
# logger.info(f"End: {name}")
|
||||||
@@ -348,7 +349,7 @@ async def comfy_deploy_run(request):
|
|||||||
|
|
||||||
status = 200
|
status = 200
|
||||||
|
|
||||||
if "node_errors" in res and res["node_errors"]:
|
if "node_errors" in res and res["node_errors"] is not None:
|
||||||
# Even tho there are node_errors it can still be run
|
# Even tho there are node_errors it can still be run
|
||||||
status = 400
|
status = 400
|
||||||
await update_run_with_output(prompt_id, {
|
await update_run_with_output(prompt_id, {
|
||||||
@@ -386,7 +387,7 @@ async def stream_prompt(data):
|
|||||||
workflow_api=workflow_api
|
workflow_api=workflow_api
|
||||||
)
|
)
|
||||||
|
|
||||||
log('info', "Begin prompt", prompt=prompt)
|
# log('info', "Begin prompt", prompt=prompt)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
res = post_prompt(prompt)
|
res = post_prompt(prompt)
|
||||||
@@ -409,7 +410,7 @@ async def stream_prompt(data):
|
|||||||
|
|
||||||
status = 200
|
status = 200
|
||||||
|
|
||||||
if "node_errors" in res and res["node_errors"]:
|
if "node_errors" in res and res["node_errors"] is not None:
|
||||||
# Even tho there are node_errors it can still be run
|
# Even tho there are node_errors it can still be run
|
||||||
status = 400
|
status = 400
|
||||||
await update_run_with_output(prompt_id, {
|
await update_run_with_output(prompt_id, {
|
||||||
@@ -453,7 +454,7 @@ async def stream_response(request):
|
|||||||
if not comfy_message_queues[prompt_id].empty():
|
if not comfy_message_queues[prompt_id].empty():
|
||||||
data = await comfy_message_queues[prompt_id].get()
|
data = await comfy_message_queues[prompt_id].get()
|
||||||
|
|
||||||
log('info', data["event"], data=json.dumps(data))
|
# log('info', data["event"], data=json.dumps(data))
|
||||||
# logger.info("listener", data)
|
# logger.info("listener", data)
|
||||||
await response.write(f"event: event_update\ndata: {json.dumps(data)}\n\n".encode('utf-8'))
|
await response.write(f"event: event_update\ndata: {json.dumps(data)}\n\n".encode('utf-8'))
|
||||||
await response.drain() # Ensure the buffer is flushed
|
await response.drain() # Ensure the buffer is flushed
|
||||||
|
|||||||
+1081
-946
File diff suppressed because it is too large
Load Diff
@@ -51,7 +51,9 @@ const createRunRoute = createRoute({
|
|||||||
export const registerCreateRunRoute = (app: App) => {
|
export const registerCreateRunRoute = (app: App) => {
|
||||||
app.openapi(createRunRoute, async (c) => {
|
app.openapi(createRunRoute, async (c) => {
|
||||||
const data = c.req.valid("json");
|
const data = c.req.valid("json");
|
||||||
const origin = new URL(c.req.url).origin;
|
const proto = c.req.headers.get('x-forwarded-proto') || "http";
|
||||||
|
const host = c.req.headers.get('x-forwarded-host') || c.req.headers.get('host');
|
||||||
|
const origin = `${proto}://${host}` || new URL(c.req.url).origin;
|
||||||
const apiKeyTokenData = c.get("apiKeyTokenData")!;
|
const apiKeyTokenData = c.get("apiKeyTokenData")!;
|
||||||
|
|
||||||
const { deployment_id, inputs } = data;
|
const { deployment_id, inputs } = data;
|
||||||
|
|||||||
Reference in New Issue
Block a user