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

Selenium浏览器无法启动,进程无响应阻塞Eventlet服务

问题排查与解决方案
  • 定位阻塞点:在初始化浏览器的代码前后加调试打印,确认是否卡在seleniumwire.undetected_chromedriver.Chrome()实例化步骤。比如:

    print("About to initialize Chrome driver")
    driver = seleniumwire.undetected_chromedriver.Chrome()
    print("Chrome driver initialized successfully")
    

    这样能明确是启动代码本身卡住,还是后续逻辑问题。

  • 核对版本兼容性:确保seleniumwire、undetected-chromedriver和本地Chrome浏览器版本完全匹配。比如Chrome 120对应undetected-chromedriver 3.5.6,版本不匹配大概率会导致无响应启动失败,直接升级或降级对应包即可。

  • 排查DEV环境变量干扰:既然只有DEV模式下出问题,检查DEV环境中是否有代理配置、端口占用或额外的调试参数冲突。可以临时关闭DEV环境变量启动项目,看浏览器能否正常运行,逐步排查DEV模式下的特殊配置。

  • 解决Eventlet协程冲突:Eventlet的协程补丁可能和selenium的阻塞操作冲突。可以调整monkey patch的范围,或者单独用协程启动浏览器进程:

    import eventlet
    # 只patch必要模块,避免影响selenium
    eventlet.monkey_patch(socket=True, select=True)
    
    def init_browser():
        global driver
        driver = seleniumwire.undetected_chromedriver.Chrome()
    
    # 用非阻塞协程启动浏览器
    eventlet.spawn_n(init_browser)
    
  • 调整Chrome启动参数:undetected_chromedriver的默认参数可能和你的环境不兼容,试试添加基础启动参数:

    options = seleniumwire.undetected_chromedriver.ChromeOptions()
    options.add_argument("--no-sandbox")  # 解决Linux环境下权限问题
    options.add_argument("--disable-dev-shm-usage")  # 避免内存不足导致的卡死
    options.add_argument("--headless=new")  # 先测试无头模式是否能启动,排除UI渲染问题
    driver = seleniumwire.undetected_chromedriver.Chrome(options=options)
    
  • 清理残留进程:之前无响应的Chrome或chromedriver进程可能占用资源,导致新进程无法启动,手动清理:

    # Windows系统
    taskkill /F /IM chrome.exe /IM chromedriver.exe
    # Linux/macOS系统
    pkill -f chrome
    pkill -f chromedriver
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 11:07:11