Docker部署Superset 1.0.1 多报表邮件发送时截图生成失败求助
Superset 1.0.1 多报表并发发送截图失败解决方案
报错根因:你遇到的Report Schedule execution failed when generating a screenshot报错,结合日志里的Failed to decode response from marionette、WebDriver object has no attribute 'screenshot'信息,是Superset 1.0.1版本默认使用Firefox+Geckodriver做报表截图工具时,并发任务下驱动进程崩溃、连接异常中断导致的,属于该版本的已知稳定性问题。
修复步骤
- 调整Celery Worker并发数
报表截图任务不支持高并发,先降低Celery worker的并发数避免资源争抢,Docker部署时修改docker-compose.yml中superset-worker服务的启动命令,增加--concurrency=2参数(并发数建议不要超过2),同时错开多个报表任务的调度时间,不要同时触发多个截图任务。 - 优化WebDriver启动参数
在superset_config.py中添加以下配置,提升驱动稳定性、延长超时时间:# webdriver 基础配置 WEBDRIVER_TYPE = "firefox" WEBDRIVER_OPTION_ARGS = [ "--headless", "--no-sandbox", "--disable-gpu", "--disable-dev-shm-usage", "--disable-extensions", ] # 容器内可访问的Superset地址,避免跨域或网络不通问题 WEBDRIVER_BASEURL = "http://127.0.0.1:8088/" # 延长页面加载等待时间,适配大仪表板 SCREENSHOT_LOAD_TIME_SECONDS = 30 - 替换为更稳定的Chrome内核
Firefox+Geckodriver在无界面环境下的稳定性远低于Chromium,可在Superset的Docker镜像中预装chromium和chromedriver依赖,然后将上面配置中的WEBDRIVER_TYPE改为"chrome"即可。 - 版本升级(可选)
该WebDriver资源泄露的问题在Superset 1.3及以上版本已完成修复,如果上述配置调整仍不能解决问题,可直接升级到更高稳定版本。
内容的提问来源于stack exchange,提问作者Viktor Melnikov
相关产品推荐
相关产品推荐

