如何将炫酷的报表直接截图发送邮件——在Superset 0.37使用Schedule Email功能
Superset的图表是非常炫酷的,但是原来的版本只能在web端查看,而最新的0.37版本,可以将图表截图直接发送成邮件,非常的方便。
本文将详细介绍Superset 0.37 定时邮件功能。安装过程遇到的任何问题请关注 “实时流式计算” 随时与我联系。所有的离线安装包已经整理好,请后台回复 “superset0928” 下载。
开启邮件功能
superset 0.37的电子邮件功能 默认是关闭的
电子邮件功能允许用户对以下两种电子邮件进行报告:
- 图表和仪表板(附件或嵌在邮件之中)
- 图表数据(CSV附件)
vi config.py
开启邮件功能
ENABLE_SCHEDULED_EMAIL_REPORTS = True
要发送电子邮件 还需要配置一下SMTP
EMAIL_NOTIFICATIONS = True
SMTP_HOST = "email-smtp.eu-west-1.amazonaws.com"
SMTP_STARTTLS = True
SMTP_SSL = False
SMTP_USER = "smtp_username"
SMTP_PORT = 25
SMTP_PASSWORD = os.environ.get("SMTP_PASSWORD")
SMTP_MAIL_FROM = "insights@komoot.com"
启动前记得执行 superset init 否则可能看不到菜单
这时候再登录superset,我们可以看到在Manage下有两个新的菜单了
Dashboard Emails 和 Chart Email Schedules
配置Celery
邮件功能需要使用Celery进行定时调度,为了开启Celery,需要在config.py中进行配置。
class CeleryConfig(object):
BROKER_URL = 'redis://localhost:6379/0'
CELERY_IMPORTS = (
'superset.sql_lab',
'superset.tasks',
)
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERYD_LOG_LEVEL = 'DEBUG'
CELERYD_PREFETCH_MULTIPLIER = 10
CELERY_ACKS_LATE = True
CELERY_ANNOTATIONS = {
'sql_lab.get_sql_results': {
'rate_limit': '100/s',
},
'email_reports.send': {
'rate_limit': '1/s',
'time_limit': 120,
'soft_time_limit': 150,
'ignore_result': True,
},
}
CELERYBEAT_SCHEDULE = {
'email_reports.schedule_hourly': {
'task': 'email_reports.schedule_hourly',
'schedule': crontab(minute=1, hour='*'),
},
}
CELERY_CONFIG = CeleryConfig
随后启动celery worker和celery beat
celery worker --app=superset.tasks.celery_app:app --pool=prefork -O fair -c 4
celery beat --app=superset.tasks.celery_app:app
为了更好地监控Celery,建议大家安装flower,这是一个celery的监控,可以清楚的看到celery任务的执行情况。
pip install flower
celery flower --app=superset.tasks.celery_app:app
flower页面:
安装浏览器驱动
为了可以渲染看板,需要在superset所在环境下本地安装浏览器驱动。
驱动的类型在config.py中配置
EMAIL_REPORT_WEBDRIVER = "chrome"
这里安装chrome
从google官方网站下载google chrome安装包
http://www.google.cn/chrome/browser/desktop/index.html
选择linux系统,并下载google-chrome-stable_current_x86_64.rpm
安装:rpm -ivh google-chrome-stable_current_x86_64.rpm
再安装chromedriver
http://chromedriver.chromium.org/
unzip chromedriver_linux64.zip
mv chromedriver /usr/bin/
清注意两者版本一定要保证一致
安装成功输入 chrome 和 chromedriver验证一下
发送邮件
准备工作做好以后,就可以新建一个邮件发送任务了。
发送看板:
可以选择发送的看板,crontab表达式,邮箱,是否发送测试邮件,内联还是附件。。
也可以选择发送图表:
可以选择发送原始数据。
最后,在邮件中接收到看板和图表了~
邮件看板:
邮件图表:
原始数据:
常见错误
接收不到邮件,也没有看到错误提示
请仔细查看celery worker的log日志,如果发送失败会有错误提示。
可能是SMTP或者其他的配置问题。
如果log正常,请注意设置 SCHEDULED_EMAIL_DEBUG_MODE 是不是设置成了True,如果是True将进行调试模式不会真正的发送邮件,要改成False。
Error: Failed dependencies:
Error: Failed dependencies:
libappindicator3.so.1()(64bit) is needed by google-chrome-stable-85.0.4183.121-1.x86_64
liberation-fonts is needed by google-chrome-stable-85.0.4183.121-1.x86_64
libvulkan.so.1()(64bit) is needed by google-chrome-stable-85.0.4183.121-1.x86_64
安装chrome依赖失败,有网的情况下 yum install libappindicator3 等等 依次安装,没网的话只能自行下载
IndexError: pop from empty list
redis.exceptions.AuthenticationError: Authentication required.
redis认证失败,redis设置了密码,但是访问的URL没有设置密码,设置好密码:“redis://xxx:xxx@localhost:6379/0”
想去掉邮件中的Explore in Superset
需要修改源码,位于
anaconda3/lib/python3.7/site-packages/apache_superset-0.37.0-py3.7.egg/superset/tasks/schedules.py
里面有report charts的邮件模板,修改为自己想要的即可。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php面试笔记-php基础知识-变量和引用变量
- 【STM32F429开发板用户手册】第34章 STM32F429的SPI总线应用之驱动DAC8501
- docker 安装mysql5.7
- php面试笔记(5)-php基础知识-自定义函数及内部函数考点
- AJAX的一个简单实例,跨域的解决,使用JQuery来进行ajax的调用
- ASP.NET Core 将文件夹内容输出为压缩包文件方法
- 如何阻止指定类型的SAP CRM附件被上传到服务器
- Docker 之NameSpace与Cgroup
- 微信网页扫码登录和公众号网页授权登录的比较
- 【TBase开源版测评】分布式数据库复制表关联查询
- v-decorator的取值与赋值
- fastjson导致spring security oauth2的token序列化错误
- 微信小程序webview,a锚点跳转,回退时一直保留在原页面
- SLURM使用教程
- MIME 类型大全,你值得收藏