Superse支持邮件定时任务,可以配置定时发送图表或者看板.默认没有开启该功能,需要手动配置
1.修改配置文件
修改项目主目录下的 config.py 文件,设置如下:
#开启定时邮件功能
ENABLE_SCHEDULED_EMAIL_REPORTS = True
EMAIL_NOTIFICATIONS = True
SMTP_HOST = "邮箱服务器地址"
SMTP_STARTTLS = False
SMTP_SSL = False
SMTP_USER = "发件人名称"
SMTP_PORT = 25
SMTP_PASSWORD = "密码"
SMTP_MAIL_FROM = "邮箱地址"
重新执行 superset init
2.页面配置定时任务
刷新页面,多出了图表邮件定时设置功能
图表定时邮件配置页面为:http://localhost:8787/sliceemailscheduleview/list/
具体管理页面如下:
新增定时任务页面,配置crontab表达式,以及收件人信息
同样的,看板定时任务配置页面地址为: http://localhost:8787/dashboardemailscheduleview/list/
3.启动定时任务
需要启动Celery进程来执行Superset定时任务
3.1 Celery
Celery是一个分布式异步消息任务队列,可以实现任务异步处理,制定定时任务等
分别启动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
在worker命令行界面可以看到定时任务执行的日志
3.2 Supervisor+Celery
Supervisor 是一个进程管理工具可以用它来管理Celery进程
配置文件 supervisord.conf 添加内容如下:
[include]
;files = /etc/supervisor/conf.d/*.conf
files = /data/supervisord_config/supervisord/*.conf
[program:celeryworker]
command=celery worker --app=superset.tasks.celery_app:app --pool=prefork -O fair -c 4
directory=/data/supervisord_config
numprocs=1
stdout_logfile=/data/supervisord_config/supervisord/celeryworker.log
stderr_logfile=/data/supervisord_config/supervisord/celeryworker_err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
priority=15
user=root
[program:celerybeat]
command=celery beat --app=superset.tasks.celery_app:app
directory=/data/supervisord_config
numprocs=1
stdout_logfile=/data/supervisord_config/supervisord/celerybeat.log
stderr_logfile=/data/supervisord_config/supervisord/celerybeat_err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
priority=15
user=root
执行 supervisord -c /data/superset_config/supervisord/supervisord.conf 即可启动celerybea
t和celeryworker进程,当设置了autorestart为true,进程挂掉后会自动执行重启