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

如何部署含Selenium的Flask应用?解决托管环境驱动崩溃问题

解决Flask+Selenium在托管环境的驱动崩溃问题

问题根源

Vercel这类无服务器托管平台的运行环境极简,缺少Chrome浏览器依赖的桌面环境,且手动上传的Chrome Driver极易与平台的系统架构、Chrome版本不匹配,导致驱动启动失败。

解决方案

1. 更换适配的托管平台

优先选择支持自定义环境/浏览器的免费平台:

  • Render:支持Docker部署,可自行安装Chrome及驱动,免费额度足够小流量应用使用
  • Fly.io:提供免费资源配额,支持Docker镜像部署,适配需要浏览器运行的服务场景
  • PythonAnywhere:专为Python应用设计,自带Chrome和Selenium支持,免费版可直接满足需求

2. 优化Selenium配置(适配无头环境)

无论选用哪个平台,都要配置无头模式并添加必要参数,同时用webdriver-manager自动管理驱动版本,避免手动上传带来的兼容问题:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

def get_chrome_driver():
    chrome_options = Options()
    # 启用新版无头模式,适配现代Chrome版本
    chrome_options.add_argument("--headless=new")
    # 禁用沙箱(托管环境普遍需要该参数)
    chrome_options.add_argument("--no-sandbox")
    # 规避/dev/shm内存限制导致的崩溃问题
    chrome_options.add_argument("--disable-dev-shm-usage")
    # 设置下载目录为托管环境可写的临时目录
    chrome_options.add_experimental_option(
        "prefs", {"download.default_directory": "/tmp"}
    )
    # 自动下载匹配当前环境的驱动文件
    driver = webdriver.Chrome(
        executable_path=ChromeDriverManager().install(),
        options=chrome_options
    )
    return driver

注意:需要在requirements.txt中添加webdriver-manager依赖项。

3. 更优替代:直接下载Google Sheet(无需Selenium)

如果仅需将Google Sheet导出为Excel,完全可以跳过Selenium,利用Google Sheet的公开导出链接直接下载,更轻量且无环境依赖:

import requests

def download_sheet_as_xlsx(spreadsheet_id, save_path="/tmp/output.xlsx"):
    export_url = f"https://docs.google.com/spreadsheets/d/{spreadsheet_id}/export?format=xlsx"
    # 若Sheet需要权限访问,需在请求头中添加Google OAuth凭证
    response = requests.get(export_url)
    response.raise_for_status()
    with open(save_path, "wb") as f:
        f.write(response.content)
    return save_path

此方法仅需保证Sheet设置为「任何人可查看/下载」,若需处理私有Sheet,可结合Google OAuth 2.0获取身份凭证。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:21:21