Compare commits

..
Author SHA1 Message Date
bennykok 5423b4ee6f fix: simply js import 2025-01-05 14:00:42 +08:00
Emmanuel Morales 2c1656756d fix(updates): make updates async to avoid blocking execution (#75)
I tracked the time and takes ~200ms everytime that we send the "Executing <NODE NAME> n%".
So this means that if you have 10 custom nodes we are adding 2 extra seconds to the execution.
200 * 10 = 2,000.
Some workflows are more complext and have more custom nodes, so this only keeps increasing.
2025-01-03 16:25:04 +08:00
5 changed files with 16 additions and 42 deletions
+9 -9
View File
@@ -1280,7 +1280,7 @@ async def send_json_override(self, event, data, sid=None):
if prompt_id in prompt_metadata:
prompt_metadata[prompt_id].start_time = time.perf_counter()
await update_run(prompt_id, Status.RUNNING)
asyncio.create_task(update_run(prompt_id, Status.RUNNING))
if event == "executing" and data and CURRENT_START_EXECUTION_DATA:
@@ -1320,10 +1320,10 @@ async def send_json_override(self, event, data, sid=None):
])
prompt_id = data.get("prompt_id")
await update_run_with_output(
asyncio.create_task(update_run_with_output(
prompt_id,
node_execution_array, # Send the array instead of the OrderedDict
)
))
print(node_execution_array)
@@ -1342,11 +1342,11 @@ async def send_json_override(self, event, data, sid=None):
if prompt_metadata[prompt_id].start_time is not None:
elapsed_time = current_time - prompt_metadata[prompt_id].start_time
logger.info(f"Elapsed time: {elapsed_time} seconds")
await send(
asyncio.create_task(send(
"elapsed_time",
{"prompt_id": prompt_id, "elapsed_time": elapsed_time},
sid=sid,
)
))
if event == "executing" and data.get("node") is not None:
node = data.get("node")
@@ -1370,7 +1370,7 @@ async def send_json_override(self, event, data, sid=None):
prompt_metadata[prompt_id].last_updated_node = node
class_type = prompt_metadata[prompt_id].workflow_api[node]["class_type"]
logger.info(f"At: {round(calculated_progress * 100)}% - {class_type}")
await send(
asyncio.create_task(send(
"live_status",
{
"prompt_id": prompt_id,
@@ -1378,10 +1378,10 @@ async def send_json_override(self, event, data, sid=None):
"progress": calculated_progress,
},
sid=sid,
)
await update_run_live_status(
))
asyncio.create_task(update_run_live_status(
prompt_id, "Executing " + class_type, calculated_progress
)
))
if event == "execution_cached" and data.get("nodes") is not None:
if prompt_id in prompt_metadata:
-4
View File
@@ -1,4 +0,0 @@
/** @typedef {import('../../../web/scripts/api.js').api} API*/
import { api as _api } from '../../scripts/api.js';
/** @type {API} */
export const api = _api;
-4
View File
@@ -1,4 +0,0 @@
/** @typedef {import('../../../web/scripts/app.js').ComfyApp} ComfyApp*/
import { app as _app } from '../../scripts/app.js';
/** @type {ComfyApp} */
export const app = _app;
+7 -7
View File
@@ -1,8 +1,11 @@
import { app } from "./app.js";
import { api } from "./api.js";
import { ComfyWidgets, LGraphNode } from "./widgets.js";
import { app } from "../../scripts/app.js";
import { api } from "../../scripts/api.js";
// import { LGraphNode } from "../../scripts/widgets.js";
LGraphNode = LiteGraph.LGraphNode;
import { ComfyDialog, $el } from "../../scripts/ui.js";
import { generateDependencyGraph } from "https://esm.sh/[email protected]";
import { ComfyDeploy } from "https://esm.sh/comfydeploy@0.0.19-beta.30";
import { ComfyDeploy } from "https://esm.sh/comfydeploy@2.0.0-beta.69";
const styles = `
.comfydeploy-menu-item {
@@ -755,7 +758,6 @@ const ext = {
"right",
);
localStorage.setItem("Comfy.MenuPosition.Docked", "true");
window.location.reload();
console.log("native mode manmanman");
} catch (error) {
console.error("Error setting validation to false", error);
@@ -1288,8 +1290,6 @@ function addButton() {
app.registerExtension(ext);
import { ComfyDialog, $el } from "../../scripts/ui.js";
export class InfoDialog extends ComfyDialog {
constructor() {
super();
-18
View File
@@ -1,18 +0,0 @@
// /** @typedef {import('../../../web/scripts/api.js').api} API*/
// import { api as _api } from "../../scripts/api.js";
// /** @type {API} */
// export const api = _api;
/** @typedef {typeof import('../../../web/scripts/widgets.js').ComfyWidgets} Widgets*/
import { ComfyWidgets as _ComfyWidgets } from "../../scripts/widgets.js";
/**
* @type {Widgets}
*/
export const ComfyWidgets = _ComfyWidgets;
// import { LGraphNode as _LGraphNode } from "../../types/litegraph.js";
/** @typedef {typeof import('../../../web/types/litegraph.js').LGraphNode} LGraphNode*/
/** @type {LGraphNode}*/
export const LGraphNode = LiteGraph.LGraphNode;