Make GPU wake return before Coolify times out, and skip hung Comfy ports.
The site poke hit /start while the agent waited on a dead 8188 probe, so wake looked down even with the host agent running. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -68,9 +68,9 @@ function candidatePorts() {
|
||||
return ordered
|
||||
}
|
||||
|
||||
async function probeStats(portNum) {
|
||||
async function probeStats(portNum, timeoutMs = 800) {
|
||||
try {
|
||||
const res = await fetch(`http://127.0.0.1:${portNum}/system_stats`, { signal: AbortSignal.timeout(2500) })
|
||||
const res = await fetch(`http://127.0.0.1:${portNum}/system_stats`, { signal: AbortSignal.timeout(timeoutMs) })
|
||||
if (!res.ok) return null
|
||||
const stats = await res.json()
|
||||
if (!stats?.system) return null
|
||||
@@ -91,12 +91,11 @@ function advertisedPort(stats) {
|
||||
}
|
||||
|
||||
async function findHealthyPort() {
|
||||
const found = []
|
||||
for (const next of candidatePorts()) {
|
||||
const probed = await Promise.all(candidatePorts().map(async (next) => {
|
||||
const stats = await probeStats(next)
|
||||
if (!stats) continue
|
||||
found.push({ port: next, advertised: advertisedPort(stats) })
|
||||
}
|
||||
return stats ? { port: next, advertised: advertisedPort(stats) } : null
|
||||
}))
|
||||
const found = probed.filter(Boolean)
|
||||
const native = found.find(item => item.advertised && item.advertised === item.port)
|
||||
if (native) return native.port
|
||||
for (const item of found) {
|
||||
@@ -242,11 +241,13 @@ function desktopShellCommand() {
|
||||
|
||||
async function pythonMainUp() {
|
||||
try {
|
||||
const { stdout } = await execFileAsync('powershell.exe', [
|
||||
const { stdout } = await execFileAsync('tasklist', ['/FO', 'CSV', '/NH'], { windowsHide: true, timeout: 2000 })
|
||||
if (!/python(?:w)?\.exe/i.test(stdout)) return false
|
||||
const { stdout: verbose } = await execFileAsync('powershell.exe', [
|
||||
'-NoProfile', '-Command',
|
||||
"Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -match 'ComfyUI\\\\main.py|ComfyUI/main.py' } | Select-Object -First 1 -ExpandProperty ProcessId"
|
||||
], { windowsHide: true, timeout: 6000 })
|
||||
return Boolean(String(stdout).trim())
|
||||
], { windowsHide: true, timeout: 2500 })
|
||||
return Boolean(String(verbose).trim())
|
||||
} catch {
|
||||
return false
|
||||
}
|
||||
@@ -270,7 +271,7 @@ async function pickListenPort() {
|
||||
for (const next of ordered) {
|
||||
if (!next || seen.has(next)) continue
|
||||
seen.add(next)
|
||||
if (await probeStats(next)) return next
|
||||
if (await probeStats(next, 400)) return next
|
||||
if (!(await portInUse(next))) return next
|
||||
}
|
||||
return preferred
|
||||
@@ -614,6 +615,10 @@ const server = http.createServer(async (req, res) => {
|
||||
}
|
||||
await taskkillImage('Comfy Desktop.exe')
|
||||
const launched = await startComfy()
|
||||
if (launched.port) {
|
||||
lastProcessUp = true
|
||||
ensureProxy(launched.port)
|
||||
}
|
||||
return json(res, 200, { ok: true, asleep: false, ...launched })
|
||||
}
|
||||
if (req.method === 'POST' && url.pathname === '/stop') {
|
||||
|
||||
Reference in New Issue
Block a user