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

Chrome无头模式下Selenium偶发SessionNotCreatedException渲染超时问题求助

解决树莓派无头Chrome Selenium超时问题

我来帮你搞定这个偶发的渲染器超时问题——树莓派的资源有限,加上无头Chrome的默认配置有时候不太适配ARM架构,很容易出现这类问题。给你几个针对性的解决方案,按优先级试试:

1. 调整Chrome启动参数(最关键)

树莓派跑无头Chrome必须优化启动参数,否则很容易因为资源不足或渲染异常超时。修改你的options配置,加上这些参数:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

service = Service(r'/usr/lib/chromium-browser/chromedriver')
options = Options()
options.headless = True

# 核心优化参数,树莓派必加
options.add_argument('--no-sandbox')  # 禁用沙箱,ARM环境下经常需要
options.add_argument('--disable-dev-shm-usage')  # 避免使用/dev/shm(树莓派默认这个分区很小)
options.add_argument('--disable-gpu')  # 禁用GPU渲染,节省资源
options.add_argument('--window-size=1920,1080')  # 设置固定窗口大小,避免渲染布局异常

# 延长超时阈值
options.page_load_timeout = 120  # 页面加载超时设为120秒
options.add_argument('--timeout=120000')  # 渲染器超时设为120秒

# 关闭不必要的特性,减少资源占用
options.add_argument('--disable-extensions')
options.add_argument('--disable-plugins')
options.add_argument('--disable-images')  # 如果不需要加载图片,可以加上这个进一步节省资源

driver = webdriver.Chrome(service=service, options=options)

2. 确认ChromeDriver与Chromium版本完全匹配

虽然你说版本对应,但树莓派上的Chrome通常是Chromium,要确保下载的ChromeDriver是对应Chromium版本的ARM架构版本,不是x86的。另外记得给Driver加执行权限:

sudo chmod +x /usr/lib/chromium-browser/chromedriver

3. 限制Chrome资源占用

树莓派内存有限,给Chrome设置内存上限,避免它把内存占满导致超时:

# 新增内存限制参数
options.add_argument('--max-old-space-size=512')  # 限制V8引擎内存为512MB
options.add_argument('--memory-pressure-off')  # 关闭内存压力检测,减少不必要的卡顿

4. 增加重试机制处理偶发超时

因为是偶发错误,给初始化driver的逻辑加个重试,避免单次超时直接失败:

from selenium.common.exceptions import SessionNotCreatedException
import time

def get_chrome_driver():
    service = Service(r'/usr/lib/chromium-browser/chromedriver')
    options = Options()
    options.headless = True
    # 把上面的优化参数都加上
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--disable-gpu')
    options.add_argument('--window-size=1920,1080')
    
    try:
        return webdriver.Chrome(service=service, options=options)
    except SessionNotCreatedException:
        print("Driver初始化超时,3秒后重试...")
        time.sleep(3)
        return get_chrome_driver()

driver = get_chrome_driver()

这些方法里,--no-sandbox和--disable-dev-shm-usage是解决树莓派无头Chrome超时的核心,大部分情况下加了这两个参数就能解决问题。如果还是偶尔出现,再结合内存限制和重试机制应该就能搞定了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:57:49