Superset配置邮件发送报告功能

Superset配置邮件发送报告功能

superset版本1.3.0
安装方式: docker官方安装

superset config配置

EMAIL_REPORTS_USER="admin" # 发送邮件的用户账号
EMAIL_REPORTS_SUBJECT_PREFIX = "[Report] " # 邮件前缀
EMAIL_PAGE_RENDER_WAIT=300
EMAIL_NOTIFICATIONS = True

SMTP_HOST = "smtp.exmail.qq.com"  
# 这部分直接参考smtplib模组的参数即可,如果是腾讯企业邮箱可以直接用下面的配置
SMTP_STARTTLS = False
SMTP_SSL = True
SMTP_USER = "***@***.com"
SMTP_PORT = 465 # your port eg. 587
SMTP_PASSWORD = "******"
SMTP_MAIL_FROM = "***@***.com"

WEBDRIVER_TYPE= "chrome" 
# 用chrome的我这样配,记得driver和chrome版本匹配
WEBDRIVER_OPTION_ARGS = [
        "--force-device-scale-factor=2.0",
        "--high-dpi-support=2.0",
        "--headless",
        "--disable-gpu",
        "--disable-dev-shm-usage",
        "--no-sandbox",
        "--disable-setuid-sandbox",
        "--disable-extensions",
        ]

FEATURE_FLAGS = {"ALERT_REPORTS": True,
    "ENABLE_TEMPLATE_PROCESSING": True,
    "THUMBNAILS" : False,}
WEBDRIVER_WINDOW = {"dashboard": (1600, 3500), "slice": (1280, 960)} # 图片报告的图片大小
ALERT_REPORTS_NOTIFICATION_DRY_RUN = False # 为true时测试配置效果,不发送邮件
WEBDRIVER_BASEURL = "https://***"

WEBDRIVER_BASEURL_USER_FRIENDLY="https://***" 
SUPERSET_WEBSERVER_PROTOCOL = "http"
SUPERSET_WEBSERVER_ADDRESS = "superset"
SUPERSET_WEBSERVER_TIMEOUT=600

如上配置成功后有两个问题,一个是发送csv文件时的图表标题需要为英文,否则邮件会发送但没有附件;另一个时发送png图片时,中文字符为方框无法展示

debian10 配置中文环境

之所以图片报告发送时,中文是方框,是因为没有配置容器中文环境
如下所示,查看当前环境

root@ca04d687222c:~# locale
LANG=zh_CN.utf8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=C.UTF-8

lang需要设置为 zh_CN.utf8 才能使浏览器正常显示中文

首先,确认locale 是否已安装对应的字符集

root@ca04d687222c:~# locale -a
C
C.UTF-8
POSIX

由于容器默认是精简版,所以没有安装,而要在容器中安装对应的字符集,很麻烦

首先,给apt换源

查看linux发行版本

cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Debian GNU/Linux 10 (buster) 版本,该版本下默认安装工具是apt,如果不换源,要么架梯子,要么将体验b/s的下载速度,那感觉太酸爽。
vim 打开/etc/apt/sources.list,替换为如下buster版本的源,如选错镜像,apt会各种冲突,什么都装不了。修改完源后,需要apt update一下,让源生效

vim /etc/apt/sources.list

deb http://mirrors.163.com/debian/ buster main non-free contrib
deb http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ buster main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ buster-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ buster/updates main non-free contrib
update
update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。


upgrade
upgrade 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update, 这样才能是最新的。

An update should always be performed before an upgrade or dist-upgrade.

upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded.

安装对应字符集

首先,安装locals
apt install locales
然后,安装字符集
dpkg-reconfigure locales

选486即可,可惜我的486第一季全网下架了
486. zh_CN.UTF-8 UTF-8
安装成功后,可以使用 locale -a 指令查看所有可用字符集

安装完成后需要启用,在此处卡了很久

我使用如下指令,、etc/default/locale配置文件里也确实修改了,但使用locale指令查看,还是没变化。最后又设置环境变量的生效了。

locale-gen zh_CN.UTF-8

linux中修改字符编码

修改环境变量的方法

最后,安装对应中文字体
#apt-get install xfonts-intl-chinese
#apt-get install xfonts-intl-chinese wqy*

再更新字体库

fc-cache -fv

可以使用 fc-list 指令查看安装的字体

修改源码使csv附件名中文时正常显示

修改superset/utils/core.py 882行

# Attach any files passed directly
for name, body in (data or {}).items():
    att = MIMEApplication(
            body,
            Name=name,
            )
    att.add_header('Content-Disposition', 'attachment',filename=('gbk', '', name))
    msg.attach(att)
    
    '''
    msg.attach(
        MIMEApplication(
            body, Content_Disposition="attachment; filename='%s'" % name, Name=name
        )
    )
    '''
# Attach files by reading them from disk
for fname in files or []:
    basename = os.path.basename(fname)
    with open(fname, "rb") as f:
        att = MIMEApplication(
                f.read(),
                Name=basename
            )
        att.add_header('Content-Disposition', 'attachment',filename=('gbk', '', basename))
        msg.attach(att)
        '''
        msg.attach(
            MIMEApplication(
                f.read(),
                Content_Disposition="attachment; filename='%s'" % basename,
                Name=basename,
            )
        )
        '''


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值