You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eel v0.14.0服务端在电脑睡眠后崩溃,页面报localhost拒绝连接错误

问题原因

该问题为Eel v0.14.0在Windows平台的已知共性缺陷,由两个底层逻辑导致:

  • Eel内置的轻量Web服务未适配系统睡眠唤醒后的网络重置场景:电脑睡眠时系统会强制回收所有本地TCP连接,唤醒后原有socket监听状态异常,直接触发服务崩溃
  • Eel默认开启了与Chrome前端的心跳检测机制:当睡眠导致心跳包连续丢失超过阈值后,Eel会自动终止主进程,因此会出现命令行窗口直接消失、页面请求被拒绝的情况

解决方案

方案1:快速适配(无额外依赖,无需升级版本)

启动Eel时禁用心跳自动终止逻辑即可,仅需修改eel.start的传入参数:

import eel

eel.init('web') # 保持原有初始化逻辑不变
# 新增heartbeat_interval参数设为None,关闭心跳检测
eel.start('index.html', heartbeat_interval=None)

修改后心跳断连不会触发主进程退出,睡眠唤醒后刷新页面即可正常访问。

方案2:保留心跳检测并适配唤醒场景

如果需要保留心跳检测机制防止前端异常退出,可新增Windows电源事件监听,唤醒后自动重启Eel服务,代码示例如下:

import ctypes
from ctypes import wintypes
import eel
import threading

def power_event_listener():
    user32 = ctypes.WinDLL('user32', use_last_error=True)
    WM_POWERBROADCAST = 0x0218
    PBT_APMRESUMEAUTOMATIC = 0x0012

    WndProcType = ctypes.WINFUNCTYPE(wintypes.LRESULT, wintypes.HWND, wintypes.UINT, wintypes.WPARAM, wintypes.LPARAM)
    def wnd_proc(hwnd, msg, wparam, lparam):
        if msg == WM_POWERBROADCAST and wparam == PBT_APMRESUMEAUTOMATIC:
            # 唤醒后重置Eel连接并重启服务
            if hasattr(eel, '_websockets'):
                eel._websockets.close()
            threading.Thread(target=lambda: eel.start('index.html', heartbeat_interval=30), daemon=True).start()
        return user32.DefWindowProcW(hwnd, msg, wparam, lparam)

    wc = wintypes.WNDCLASSW()
    wc.lpfnWndProc = WndProcType(wnd_proc)
    wc.lpszClassName = "EelPowerMonitor"
    wc.hInstance = ctypes.windll.kernel32.GetModuleHandleW(None)
    atom = user32.RegisterClassW(ctypes.byref(wc))
    hwnd = user32.CreateWindowExW(0, atom, "EelPowerWindow", 0, 0, 0, 0, 0, None, None, wc.hInstance, None)
    
    msg = wintypes.MSG()
    while user32.GetMessageW(ctypes.byref(msg), None, 0, 0) > 0:
        user32.TranslateMessage(ctypes.byref(msg))
        user32.DispatchMessageW(ctypes.byref(msg))

# 启动电源事件监听线程
threading.Thread(target=power_event_listener, daemon=True).start()

# 原有Eel启动逻辑
eel.init('web')
eel.start('index.html', heartbeat_interval=30)

方案3:版本升级修复

Eel v0.16.0及以上版本已官方修复该缺陷,直接升级Eel版本即可解决,无需修改业务代码:

pip install eel --upgrade

内容的提问来源于stack exchange,提问作者CartClash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:12:02