如何將炫酷的報表直接截圖傳送郵件——在Superset 0.37使用Schedule Email功能
阿新 • • 發佈:2020-09-28
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094542782-414900302.png)
Superset的圖表是非常炫酷的,但是原來的版本只能在web端檢視,而最新的0.37版本,可以將圖表截圖直接傳送成郵件,非常的方便。
本文將詳細介紹Superset 0.37 定時郵件功能。安裝過程遇到的任何問題請關注 “**實時流式計算**” 隨時與我聯絡。所有的離線安裝包已經整理好,請**後臺**回覆 “**superset0928**” 下載。
# 開啟郵件功能
superset 0.37的電子郵件功能 預設是關閉的
電子郵件功能允許使用者對以下兩種電子郵件進行報告:
- 圖表和儀表板(附件或嵌在郵件之中)
- 圖表資料(CSV附件)
vi config.py
開啟郵件功能
```python
ENABLE_SCHEDULED_EMAIL_REPORTS = True
```
要傳送電子郵件 還需要配置一下SMTP
```python
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 = "[email protected]"
```
啟動前記得執行 superset init 否則可能看不到選單
這時候再登入superset,我們可以看到在Manage下有兩個新的選單了
Dashboard Emails 和 Chart Email Schedules
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094554884-1862408092.png)
# 配置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任務的執行情況。
```python
pip install flower
```
```
celery flower --app=superset.tasks.celery_app:app
```
flower頁面:
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094610554-1184314882.png)
# 安裝瀏覽器驅動
為了可以渲染看板,需要在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驗證一下
# 傳送郵件
準備工作做好以後,就可以新建一個郵件傳送任務了。
傳送看板:
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094621989-1230643682.png)
可以選擇傳送的看板,crontab表示式,郵箱,是否傳送測試郵件,內聯還是附件。。
也可以選擇傳送圖表:
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094633895-747273125.png)
可以選擇傳送原始資料。
最後,在郵件中接收到看板和圖表了~
郵件看板:
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094646174-1328156898.png)
郵件圖表:
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094659208-1992878291.jpg)
原始資料:
![](https://img2020.cnblogs.com/blog/1089984/202009/1089984-20200928094702944-393438537.png)
# 常見錯誤
## 接收不到郵件,也沒有看到錯誤提示
請仔細檢視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實戰電子書
![](https://img2020.cnblogs.com/blog/1089984/202005/1089984-20200511083216576-14373893