利用钉钉机器人定时发送数据提醒&消息

浏览: 10606

工作中偶尔会遇到一些小需求,比如以下几种需求:

  1. 在钉钉里面定时提醒订餐
  2. 每天及时发送某一场景数据指标到某个聊天群
  3. 监控数据异常

因为是小需求,没有必要新起一个工程去处理这种事情,钉钉可以支持自定义机器人,可以调用钉钉等接口请求发送数据消息,它可以支持好几种消息类型:

消息类型具体链接:https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.45484a97lobgi2&treeId=257&articleId=105735&docType=1

我们用text写个案例,直接撸代码,新建一个send_ding_msg.py文件,代码如下:

# -*- coding: utf-8 -*-
# import sys
import pyhs2
import json
import urllib2


# variable = sys.argv[0]

def send_ding_msg(list):
hook_url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx"

content = "这个是结果?%d 次 %d 单。 需要注意观察!!!" % (list[0], list[1])
tel = "[xxxx]"
json_string = {
"msgtype": "text",
"text": {
"content": content
},
"at": {
"atMobiles": tel,
"isAtAll": False #是否@全部人员,如果是True,atMobiles不生效
}
}

json_msg = json.dumps(json_string)

post_requst = urllib2.Request(url=hook_url, data=json_msg)

urllib2.urlopen(post_requst)

#链接hiveserver,获取hive相关数据
with pyhs2.connect(host='xxx.xxx.xxx.xxx',
port=8000,
authMechanism="PLAIN",
user='username',
password='password',
database='database') as conn:
with conn.cursor() as cur:
cur.execute("use database")

cur.execute("select current_database()")

print cur.fetchone()

cur.execute("select 1 as id,2 as value")

res = cur.fetchone()

print res

# 把列名和值一起获取出来,以字典映射,存到list
# cur.execute("select 1 as id,2 as value")
# cur.getSchema()
# columns = []
# list_data = []
# # 获取列字段信息
# for j in cur.getSchema():
# columns.append(j['columnName'])
# data_list = cur.fetch()
# # 将字段信息和数据映射为字典
# for data in data_list:
# list_data.append(dict(zip(columns, data)))
#
# print list_data


if __name__ == "__main__":
send_ding_msg(res)



以上代码里面的hook_url可以直接复制钉钉自定义机器人的webhook

image.png

剩下的是定时执行的问题,使用crontab配置定时任务:

使用crontab -l 可以查看执行周期:

image.png

执行完成会发送邮件到你指定邮箱,可以自行配置。

推荐 2
本文由 brucelu 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册