1. 程式人生 > >如何將炫酷的報表直接截圖傳送郵件——在Superset 0.37使用Schedule Email功能

如何將炫酷的報表直接截圖傳送郵件——在Superset 0.37使用Schedule Email功能

![](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