在PythonAnywhere部署Selenium+Flask应用遇版本匹配问题及可行性咨询
Flask+Selenium部署PythonAnywhere问题解决及可行性说明
版本不匹配问题原因
核心问题是ChromeDriver与浏览器版本不兼容:
- 初始错误:本地Chrome版本为115,但PythonAnywhere环境中存在对应90版本的旧ChromeDriver,导致版本不匹配。
- 使用webdriver-manager后:工具默认安装了对应114版本的ChromeDriver,但PythonAnywhere系统默认的Chromium是90.0.4430.212,再次出现版本不兼容。
PythonAnywhere服务器无法直接升级系统级浏览器,必须手动指定浏览器路径和对应版本的ChromeDriver。
解决步骤
1. 配置ChromeOptions(无头模式+系统浏览器路径)
服务器无图形界面,必须启用无头模式,同时指定PythonAnywhere默认的Chromium路径:
from selenium import webdriver from selenium.webdriver.chrome.service import Service as ChromeService from webdriver_manager.chrome import ChromeDriverManager options = webdriver.ChromeOptions() # 无头模式(服务器环境必需) options.add_argument('--headless') # 绕过沙箱限制 options.add_argument('--no-sandbox') # 解决/dev/shm内存不足问题 options.add_argument('--disable-dev-shm-usage') # 指定PythonAnywhere系统默认Chromium路径 options.binary_location = '/usr/bin/chromium'
2. 指定匹配版本的ChromeDriver
PythonAnywhere默认Chromium版本为90.0.4430.212,需安装对应版本的ChromeDriver:
# 初始化WebDriver,指定对应版本的ChromeDriver driver = webdriver.Chrome( service=ChromeService(ChromeDriverManager(version="90.0.4430.212").install()), options=options )
3. 额外注意事项
- 每次使用完Driver后,务必调用
driver.quit()释放资源,避免内存泄漏。 - 对Selenium操作添加异常捕获,防止单个请求失败导致整个Flask应用崩溃。
Flask通过POST运行Selenium的可行性
完全可行,但需注意以下限制:
- 资源限制:PythonAnywhere的免费/基础套餐有CPU、内存和执行时间限制,Selenium操作耗时较长时,可能触发超时或资源占用过高警告。
- 并发问题:多个POST请求同时触发Selenium操作可能导致服务器资源耗尽,建议添加请求排队或限流机制。
- 稳定性:服务器环境的浏览器版本固定,需长期维护ChromeDriver与浏览器版本的匹配,避免因环境更新导致兼容问题。
内容的提问来源于stack exchange,提问作者Usman Afridi
相关产品推荐
相关产品推荐

