前言
Python+七牛云+钉钉+ODPS实现数据获取及群消息自动推送。
几个步骤获取数据
制表、绘图
利用七牛云获取图片url
通过钉钉sdk发送群消息如果有很多信息需要推送,可以考虑在绘图时直接用subplots将图分割好; 也可以通过钉钉推送markdown内容进行多张图配置;
获取数据
参考python获取外部数据源
e.g.
def get_monitor_data():
sql='select * from table'
df=exe_sql(sql)
return df
制表、绘图
参考python matplotlib应用
参考python pyecharts应用
e.g.
def plt_data_to_line(df,img_name):
dat.plot.line(x='time', y='value',
marker='o',
figsize=(16, 6),
)
plt.gca()
plt.margins(0.2)
plt.subplots_adjust(bottom=0.15)
plt.gca().set_xlabel('')
plt.savefig(img_name, bbox_inches='tight')
plt.show()
plt.pause(2)
plt.close()
retrun Ture
利用七牛云获取图片url
def gmt_img_url(key=None,local_file=None,**kwargs):
# refer:https://developer.qiniu.com/kodo/sdk/1242/python
# key:上传后保存的文件名;
# local_file:本地图片路径,fullpath
# 遗留问题:如果服务器图片已存在,需要对保存名进行重命名
#需要填写你的 Access Key 和 Secret Key
access_key = '*************************'
secret_key = '*************************'
#构建鉴权对象
q = Auth(access_key, secret_key)
#要上传的空间
bucket_name = 'xisuo'
#生成上传 Token,可以指定过期时间等
token = q.upload_token(bucket_name, key)
#要上传文件的本地路径
ret, info = put_file(token, key, local_file)
base_url = 'http://pp055odno.bkt.clouddn.com/' #七牛测试url
url = base_url + '/' + key
private_url = q.private_download_url(url)
return private_url
key = 'data/%s'%(img_name)
img_url = gmt_img_url(key=key, local_file=img_name)
通过钉钉sdk发送群消息
def create_monitor_flow(img_url,webhook=None,msg_type=None):
# webhook 通过钉钉群添加机器人可获取
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=***************************'
xiaoding = DingtalkChatbot(webhook)
txt = '#### 昨日日期:%s,星期%s @所有人\n' \
'> 2019年1月1日起进入监控过程...\n\n' \
'> 以下为异常数据统计结果:\n\n'\
'> ![昨日数据监控结果](%s)\n'\
'> ###### xisuo数据,你所值得信赖的合作伙伴! \n'%(yesterday,wkd_str,img_url)
print(txt)
xiaoding.send_markdown(title='数据监控', text=txt, is_at_all=True)
create_monitor_flow(img_url)
服务器部署
脚本部署到服务器应用
开始愉快的玩耍吧