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

使用Supervisor时Celery任务中Selenium无法连接Chrome问题

解决方案

你的问题核心是Supervisor管理的Celery Worker进程缺少图形化运行环境或权限配置,导致Chrome无法正常启动。以下是针对性的解决步骤:

1. 强制启用Chrome无头模式

Supervisor运行的进程默认没有桌面会话,必须让Chrome以无头模式启动。修改任务代码,添加无头参数:

@shared_task(bind=True)
def task_one(self):
    options = Options()
    # Chrome 96+推荐使用新版无头模式参数
    options.add_argument("--headless=new")
    options.add_argument("--start-maximized")
    options.add_argument('--no-sandbox')
    options.add_argument("--disable-dev-shm-usage")
    # 显式指定Chrome二进制文件路径,避免环境变量查找失败
    options.binary_location = '/usr/bin/google-chrome'
    driver = webdriver.Chrome(options=options)
    wait = WebDriverWait(driver, 20)
    action = ActionChains(driver)
    driver.get('https://somewhere.com')
    # 业务逻辑代码
    # 务必关闭driver,避免进程泄漏
    driver.quit()

2. 调整Supervisor配置的环境变量与权限

编辑你的Supervisor配置文件(通常位于/etc/supervisor/conf.d/目录下),确保:

  • 使用与手动启动Celery时相同的用户(避免权限差异)
  • 配置必要的环境变量,确保Chrome能找到依赖

示例配置:

[program:celery_worker]
command=/path/to/your/venv/bin/celery -A your_django_project worker --loglevel=info
directory=/path/to/your/django/project
user=your_login_user  # 替换为你手动启动Celery时使用的用户
autostart=true
autorestart=true
stdout_logfile=/var/log/celery/worker.log
stderr_logfile=/var/log/celery/worker_error.log
environment=PATH="/path/to/your/venv/bin",DISPLAY=":0"

如果服务器无图形环境,可安装Xvfb模拟虚拟桌面,修改Supervisor启动命令:

command=/usr/bin/Xvfb :0 -screen 0 1024x768x16 & /path/to/your/venv/bin/celery -A your_django_project worker --loglevel=info

3. 添加Chrome稳定性参数

在ChromeOptions中补充以下参数,提升无桌面环境下的启动稳定性:

options.add_argument("--disable-gpu")
options.add_argument("--window-size=1920x1080")
options.add_argument("--disable-extensions")
options.add_argument("--disable-plugins")

4. 验证ChromeDriver与Chrome版本匹配

运行以下命令检查版本是否一致:

chromedriver --version
google-chrome --version

若版本不匹配,下载对应版本的ChromeDriver替换即可。

5. 检查Chrome启动权限

切换到Supervisor配置的用户,手动尝试启动Chrome:

su your_login_user
google-chrome --headless=new --no-sandbox --disable-dev-shm-usage https://somewhere.com

若启动失败,排查该用户是否有Chrome执行权限,或缺失依赖库(如libnss3、libxss1等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:01:25