本地正常的Flask+Selenium爬虫部署Google Run时出现500错误求助
问题描述
我用Selenium和Flask开发了一个动态网站爬虫,本地运行完全正常,但通过Docker部署到Google Run后出现500错误。
错误信息
栈追踪片段:
Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/flask/app.py", line 1463, in wsgi_app response = self.full_dispatch_request()
请求日志:
GET500921B1.1 sChrome 123 https://flask-selenium-app-qs6rhz6vcq-du.a.run.app/
当前配置信息
requirements.txt:
flask==3.0.2 beautifulsoup4==4.12.3 selenium==4.19.0 gunicorn==21.2.0
wsgi.py:
if __name__ == "__main__": app.run(port=8080)
Docker CMD配置:
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8080", "wsgi:app"] app.run(port=8080)
容器使用Python 3.12版本,端口已设置为8080。
问题排查与解决
1. 修复Docker CMD配置错误
你提供的Docker CMD里存在冗余代码,app.run(port=8080)不应该出现在CMD指令中,正确的CMD配置应为:
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8080", "wsgi:app"]
冗余代码会导致容器启动时执行逻辑混乱,直接触发500错误。
2. 配置Selenium无头运行模式
Google Run容器属于无头环境,本地运行时依赖的带界面Chrome无法在容器中正常工作,必须为Selenium配置无头参数:
from selenium import webdriver from selenium.webdriver.chrome.options import Options def init_chrome_driver(): chrome_options = Options() # 无头环境核心配置 chrome_options.add_argument("--headless=new") chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-gpu") return webdriver.Chrome(options=chrome_options)
--headless=new:启用新版无头模式,兼容性更好--no-sandbox:容器环境下必须禁用沙箱,否则Chrome无法启动--disable-dev-shm-usage:避免容器内共享内存空间不足的问题--disable-gpu:无头环境无需GPU加速,禁用以减少资源占用
3. 在容器内安装Chrome浏览器
requirements.txt仅包含Selenium依赖,但容器中没有Chrome浏览器及驱动,需在Dockerfile中添加安装步骤(以Debian基础镜像为例):
# 更新源并安装Chrome及驱动 RUN apt-get update && apt-get install -y \ chromium \ chromium-driver \ && rm -rf /var/lib/apt/lists/* # 将ChromeDriver加入系统路径 ENV PATH="/usr/lib/chromium-browser/:${PATH}"
4. 调整Google Run资源配额
Chrome运行需要一定资源,默认的Google Run资源配额可能不足以支撑,建议将服务配置调整为至少1CPU + 1GB内存,避免因资源不足导致Chrome崩溃。
5. 获取完整错误日志
当前栈追踪不完整,建议开启Flask异常传播并查看Google Run完整日志:
在Flask代码中添加:
app.config['PROPAGATE_EXCEPTIONS'] = True
同时在Google Cloud Console的Cloud Run服务详情页,查看完整的容器日志,定位具体的异常触发点。
内容的提问来源于stack exchange,提问作者user23896290
相关产品推荐
相关产品推荐

