Skip to content

Commit a9b3e20

Browse files
authored
Merge branch 'comfyanonymous:master' into master
2 parents b1e27d1 + 587e7ca commit a9b3e20

21 files changed

Lines changed: 54155 additions & 47730 deletions

api_server/routes/internal/internal_routes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from typing import Optional
33
from folder_paths import models_dir, user_directory, output_directory
44
from api_server.services.file_service import FileService
5+
import app.logger
56

67
class InternalRoutes:
78
'''
@@ -31,6 +32,9 @@ async def list_files(request):
3132
except Exception as e:
3233
return web.json_response({"error": str(e)}, status=500)
3334

35+
@self.routes.get('/logs')
36+
async def get_logs(request):
37+
return web.json_response(app.logger.get_logs())
3438

3539
def get_app(self):
3640
if self._app is None:

app/logger.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import logging
2+
from logging.handlers import MemoryHandler
3+
from collections import deque
4+
5+
logs = None
6+
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
7+
8+
9+
def get_logs():
10+
return "\n".join([formatter.format(x) for x in logs])
11+
12+
13+
def setup_logger(verbose: bool = False, capacity: int = 300):
14+
global logs
15+
if logs:
16+
return
17+
18+
# Setup default global logger
19+
logger = logging.getLogger()
20+
logger.setLevel(logging.DEBUG if verbose else logging.INFO)
21+
22+
stream_handler = logging.StreamHandler()
23+
stream_handler.setFormatter(logging.Formatter("%(message)s"))
24+
logger.addHandler(stream_handler)
25+
26+
# Create a memory handler with a deque as its buffer
27+
logs = deque(maxlen=capacity)
28+
memory_handler = MemoryHandler(capacity, flushLevel=logging.INFO)
29+
memory_handler.buffer = logs
30+
memory_handler.setFormatter(formatter)
31+
logger.addHandler(memory_handler)

comfy/cli_args.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,3 @@ def is_valid_directory(path: Optional[str]) -> Optional[str]:
179179

180180
if args.disable_auto_launch:
181181
args.auto_launch = False
182-
183-
import logging
184-
logging_level = logging.INFO
185-
if args.verbose:
186-
logging_level = logging.DEBUG
187-
188-
logging.basicConfig(format="%(message)s", level=logging_level)

comfy/ldm/hydit/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ def forward(self,
372372
for layer, block in enumerate(self.blocks):
373373
if layer > self.depth // 2:
374374
if controls is not None:
375-
skip = skips.pop() + controls.pop()
375+
skip = skips.pop() + controls.pop().to(dtype=x.dtype)
376376
else:
377377
skip = skips.pop()
378378
x = block(x, c, text_states, freqs_cis_img, skip) # (N, L, D)

comfy/model_management.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class CPUState(Enum):
4545
total_vram = 0
4646

4747
xpu_available = False
48+
torch_version = ""
4849
try:
4950
torch_version = torch.version.__version__
5051
xpu_available = (int(torch_version[0]) < 2 or (int(torch_version[0]) == 2 and int(torch_version[2]) <= 4)) and torch.xpu.is_available()

main.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
import folder_paths
77
import time
88
from comfy.cli_args import args
9+
from app.logger import setup_logger
10+
11+
12+
setup_logger(verbose=args.verbose)
913

1014

1115
def execute_prestartup_script():

nodes.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2129,3 +2129,5 @@ def init_extra_nodes(init_custom_nodes=True):
21292129
else:
21302130
logging.warning("Please do a: pip install -r requirements.txt")
21312131
logging.warning("")
2132+
2133+
return import_failed

server.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
from typing import Optional
3232
from api_server.routes.internal.internal_routes import InternalRoutes
3333

34-
3534
class BinaryEventTypes:
3635
PREVIEW_IMAGE = 1
3736
UNENCODED_PREVIEW_IMAGE = 2
@@ -42,6 +41,21 @@ async def send_socket_catch_exception(function, message):
4241
except (aiohttp.ClientError, aiohttp.ClientPayloadError, ConnectionResetError) as err:
4342
logging.warning("send error: {}".format(err))
4443

44+
def get_comfyui_version():
45+
comfyui_version = "unknown"
46+
repo_path = os.path.dirname(os.path.realpath(__file__))
47+
try:
48+
import pygit2
49+
repo = pygit2.Repository(repo_path)
50+
comfyui_version = repo.describe(describe_strategy=pygit2.GIT_DESCRIBE_TAGS)
51+
except Exception:
52+
try:
53+
import subprocess
54+
comfyui_version = subprocess.check_output(["git", "describe", "--tags"], cwd=repo_path).decode('utf-8')
55+
except Exception as e:
56+
logging.warning(f"Failed to get ComfyUI version: {e}")
57+
return comfyui_version.strip()
58+
4559
@web.middleware
4660
async def cache_control(request: web.Request, handler):
4761
response: web.Response = await handler(request)
@@ -401,16 +415,20 @@ async def view_metadata(request):
401415
return web.json_response(dt["__metadata__"])
402416

403417
@routes.get("/system_stats")
404-
async def get_queue(request):
418+
async def system_stats(request):
405419
device = comfy.model_management.get_torch_device()
406420
device_name = comfy.model_management.get_torch_device_name(device)
407421
vram_total, torch_vram_total = comfy.model_management.get_total_memory(device, torch_total_too=True)
408422
vram_free, torch_vram_free = comfy.model_management.get_free_memory(device, torch_free_too=True)
423+
409424
system_stats = {
410425
"system": {
411426
"os": os.name,
427+
"comfyui_version": get_comfyui_version(),
412428
"python_version": sys.version,
413-
"embedded_python": os.path.split(os.path.split(sys.executable)[0])[1] == "python_embeded"
429+
"pytorch_version": comfy.model_management.torch_version,
430+
"embedded_python": os.path.split(os.path.split(sys.executable)[0])[1] == "python_embeded",
431+
"argv": sys.argv
414432
},
415433
"devices": [
416434
{

0 commit comments

Comments
 (0)