【数据可视化】如何将炫酷的报表直接截图发送邮件——在Superset 0.37使用Schedule Email功能

Superset的图表是非常炫酷的,但是原来的版本只能在web端查看,而最新的版本,可以将图表截图直接发送成邮件,非常的方便。

本文将详细介绍Superset定时邮件功能。

开启邮件功能

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任务的执行情况。

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”

本文分享自作者个人站点/博客:https://www.cnblogs.com/tree1123/复制

如有侵权,请联系本人

删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟蜀黍

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值