• 如何将炫酷的报表直接截图发送邮件——在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的邮件模板,修改为自己想要的即可。

    更多Flink,Kafka等实时大数据分析相关技术博文,科技资讯,欢迎关注实时流式计算 公众号后台回复 “电子书” 下载300页Flink实战电子书

  • 相关阅读:
    【图论】2-SAT 问题
    【网络流】费用流(基于Capacity Scaling)
    CF gym 102483(NWERC 2018) A题 解答
    【网络流】最小点权覆盖集、最大点权独立集
    【网络流】最大密度子图
    【网络流】最大权闭合图
    简易 vim 配置
    生成函数基础
    「NOI.AC」NOI挑战赛第二场
    SDOI2020 退役记
  • 原文地址:https://www.cnblogs.com/tree1123/p/13743321.html
Copyright © 2020-2023  润新知