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

线程执行时程序暂停求助:Web服务器线程阻塞CEF初始化

问题分析与解决方案

你的代码核心问题是调用了webServerThread.join()——这个方法会强制主线程阻塞,等待子线程完全结束后才继续执行后续代码。但python -m http.server是持续运行的无限循环,导致主线程永远卡在这一步,CEF相关的初始化和浏览器创建代码根本没机会执行。

解决步骤

直接删除webServerThread.join()这一行即可。原因是你已经将线程设置为daemon=True,这类守护线程会在主线程结束时自动终止,无需手动等待。

修改后的代码

print("Server started http://%s:%s" % (hostName, serverPort))
webServerThread = threading.Thread(target=os.system, args=("python -m http.server 8081",), daemon=True)
webServerThread.start()
# 移除join(),主线程继续执行CEF初始化流程
print('Initialising CEF')
cef.Initialize()
print('[DEBUG] CreateBrowserSync')
cef.CreateBrowserSync(url="http://127.0.0.1:8081/compfile.html")
print('[DEBUG] MessageLoop')
cef.MessageLoop()

这样修改后,主线程会在启动web服务器线程后立即继续执行CEF的初始化代码,浏览器能正常加载服务器上的页面;当CEF的消息循环退出(比如关闭浏览器窗口),主线程结束,守护线程形式的web服务器也会随之终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:10:33