AWS环境glibc版本过时导致Kaleido无法运行的解决方案咨询
问题背景
我有一个名为app的Django应用,其中定义了booking模型,业务设计为用户提交预约时执行以下逻辑:
- 模型计算相关业务指标
- 生成Plotly图表并完成静态导出
- 向对应预约用户发送邮件通知
此前邮件内容为纯文本格式,为测试新增的图表附件功能,我编写了如下测试逻辑:
def send_notification(self): try: mail_msg = new_email() mail_msg.send() except Exception as e: logger.error(f"failed to send new booking mail due to {e}") mail_msg = old_mail() mail_msg.send()
本地开发调试阶段,使用Kaleido作为导出引擎为新邮件new_mail附加图表图片的功能运行无异常,核心调用代码如下:
fig.to_image("png", engine="kaleido")
整体业务链路为:前端提交预约请求 -> SQS消息队列 -> 触发send_notification()方法。
部署后故障表现
新代码部署到AWS环境后,初期未观测到报错,也未收到任何新旧版本的测试邮件;1小时后我发起的10次测试请求全部重试完成,日志和邮件链路均恢复,但仅收到了符合预期的旧版本纯文本邮件。
查询日志得到如下报错信息:
Error initializing NSS with a persistent database (sql:/home/webapp/.pki/nssdb): /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /var/app/venv/staging-LQM1lest/lib/python3.8/site-packages/kaleido/executable/lib/libsqlite3.so.0)
[ERROR] failed to send new booking mail due to 'Transform failed. Error stream'
诉求与已考虑方案
我清楚单独升级系统glibc版本极易引发系统兼容性故障,目前计划尝试降级Kaleido版本来解决问题,现咨询是否有其他可行的解决方案。
目前我已考虑的可选方案如下:
- 降级Kaleido版本(需先确认各Kaleido版本对应的glibc依赖要求)
- 单独创建Lambda函数专门执行
fig.to_image()图表导出逻辑
内容的提问来源于stack exchange,提问作者ivanculet
相关产品推荐
相关产品推荐

