每天禅道超时任务、超时未开始任务发送飞书提醒
前言
最近应公司要求要把禅道上的超时任务、超出时间没有开始的任务,发送到公司飞书群里。
禅道是干什么的,怎么部署我这里就不再赘述了,可以参考下面的连接。
https://www.zentao.net/dynamic/zentaopms12.5.3-80319.html
环境:centos 7.9
这里写了两个简单的小脚本供大家参考。
一、创建飞书群机器人
1、创建群组,已有群的找到群设置。
2、创建群机器人。
机器人名称你随意。
记好webhook地址一会儿就要用这个地址发送消息的。
这里我用的自定义关键词做的安全设置,你也可以用其他方式,关键词是你在向群里发送消息时必须包含的,否则无法发送的群里会被自动屏蔽掉。
这样群机器人就创建好了。
二、编写发送Python脚本
1.查询今天以前的逾期任务(不包含今天)
这里用到的数据库名是禅道原数据库名。
逾期任务@所有人 代码如下(示例):
#!/usr/bin/python
# conding=utf-8
# Timeout Taskimport json
import pymysql
import requests# 打开数据库连接
# IP 账号 密码 写你们自己的 还有端口写我的你连不上
db = pymysql.connect(host="mysql_ip", user="root", password="*****",port=3306, db='zentao', charset='utf8')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# sql语句查询
sql = "SELECT p.NAME AS p_name, t.NAME AS t_name, t.id as 任务ID, t.story as 需求ID, t.deadline, t.estStarted, " \"u.realname, u.mobile FROM zt_task t LEFT " \"JOIN zt_project p ON t.project = p.id LEFT JOIN zt_user u ON t.assignedTo = u.account WHERE t.deadline < " \"date_format( now(), '%y-%m-%d' ) AND t.STATUS = 'doing' AND t.deleted = '0'"# 使用 execute() 方法执行 SQL 查询
cursor.execute(sql)
result = cursor.fetchall()str1 = ' ------任务逾期风险预警------\n\n'
at = []for row in result:# for row in range(len(it)):name = row[0]task = row[1]taskid = row[2]needid = row[3]deadline = row[4]eststarted = row[5]realname = row[6]mobile = row[7]at.append(mobile)str1 += "【项目:" + str(name) + "】\n 任务:" + str(task) + "\n 任务ID:" + str(taskid) + "\n 需求ID: " + str(needid) + "\n 预计开始时间:" + str(eststarted) + "\n 截止时间:" + str(deadline) + " \n 负责人员:" + str(realname) + "\n\n"# 这个用来排查是否有数据
# print(str1, result)# 关闭数据库连接
db.close()# 判断是否有内容
if result:# 发送群消息@所有人sendurl = "https://open.feishu.cn/.......这个就是刚刚webhook的地址。"data = {"content": dict(text="<at user_id='all'></at> \n" + str1),"msg_type": "text"}request = requests.post(sendurl, json.dumps(data))else:# 发送群消息@所有人sendurl = "https://open.feishu.cn/.......这个就是刚刚webhook的地址。"data = {"content": {"text": "<at user_id='all'></at> \n" " 没有逾期的项目! [大笑]"},"msg_type": "text"}request1 = requests.post(sendurl, json.dumps(data))
2.查询今天以前的超时未开始任务(不包含今天)
超时未开始任务@所有人 代码如下(示例):
#!/usr/bin/python
# conding=utf-8import json
import pymysql
import requests# 打开数据库连接
# IP 账号 密码 写你们自己的 还有端口写我的你连不上
db = pymysql.connect(host="mysql_ip", user="root", password="*****",port=3306, db='zentao', charset='utf8')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# sql语句查询sql = "SELECT p.NAME AS p_name, t.NAME AS t_name, t.id AS 任务ID, t.story AS 需求ID, t.deadline, t.estStarted, \u.realname, u.mobile FROM zt_task t LEFT JOIN zt_project p ON t.project = p.id LEFT JOIN \zt_user u ON t.assignedTo = u.account WHERE t.estStarted < date_format( now( ), '%y-%m-%d' ) \AND t.STATUS = 'wait' AND t.deleted = '0' AND t.estStarted != '0000-00-00';"# 使用 execute() 方法执行 SQL 查询
cursor.execute(sql)
result = cursor.fetchall()str1 = ' ------任务未开始提醒------\n\n'
at = []
for row in result:# for row in range(len(it)):name = row[0]task = row[1]taskid = row[2]needid = row[3]deadline = row[4]eststarted = row[5]realname = row[6]mobile = row[7]at.append(mobile)str1 += "【项目:" + str(name) + "】\n 任务:" + str(task) + "\n 任务ID:" + str(taskid) + "\n 需求ID: " + str(needid) + "\n 预计开始时间:" + str(eststarted) + "\n 截止时间:" + str(deadline) + " \n 负责人员:" + str(realname) + "\n\n"print(str1)# 关闭数据库连接
# cursor.close()
db.close()if result:# 发送群消息@所有人sendurl = "https://open.feishu.cn/.......这个就是刚刚webhook的地址。"data = {"content": dict(text="<at user_id='all'></at> \n" + str1),"msg_type": "text"}request = requests.post(sendurl, json.dumps(data))# print(request, data)else:# 发送群消息@所有人sendurl = "https://open.feishu.cn/.......这个就是刚刚webhook的地址。"data = {"content": {"text": "<at user_id='all'></at> \n" " 没有未开始的项目! [大笑]"},"msg_type": "text"}request1 = requests.post(sendurl, json.dumps(data))
3.测试结果
逾期任务(示例):
超时未开始任务(示例):
4.创建定时任务
我的是centos7.9 用的crontab 创建
命令:crontab -e
当然你们自己也可以自己定义你们的发送消息时间
我的时间规则 :
周一到周五早上10点提醒任务未开始。
周一到周五下午1点钟和下午6点钟提醒逾期未完成任务。
至此整个推送告警脚本就结束了。
飞书机器人@单个人或者所有人:https://open.feishu.cn/document/ugTN1YjL4UTN24CO1UjN/uUzN1YjL1cTN24SN3UjN
每天禅道超时任务、超时未开始任务发送飞书提醒相关推荐
- php 客户端socket长连接超时,[PHP] socket客户端时的超时问题
连接socket分为连接超时和读取超时 $sock=stream_socket_client("www.google.com:80", $errno,$errstr,2); ...
- python怎么连接远程服务器没有按时响应_python通过paramiko执行ssh命令时设置超时时间 - Python - 服务器之家...
python通过paramiko执行ssh命令时设置超时时间 发布时间:2014-06-17
- 指为服务器指定超时时限为5分钟,微信服务器连接公众号开发者服务器时发生超时,超时时间为5秒,这是什么问题引起的?...
Appid: wx10d9ea1837d670fe 昵称: 中山电信 时间: 2021-04-13 18:06:01 内容: 微信服务器连接公众号开发者服务器时发生超时,超时时间为5秒 次数: 5分钟 ...
- 响应服务器421,微信服务器连接公众号开发者服务器时发生超时,超时时间为5秒? | 微信开放社区...
之前分析是响应返回的格式有问题,经过排查返回的是success,只有关键词回复是回复的xml跟官方格式一致,现在改成返回空串,问题依旧存在.麻烦帮忙排查下 问题1:微信服务器连接公众号开发者服务器时发 ...
- 电脑桌面云便签敬业签怎么设置软件启动时显示超时提醒弹窗?
一.打开已登录的敬业签Windows电脑桌面云便签,点击左上方用户头像,或按下默认快捷键Alt+Z,也可以在云便签右上方找到"设置">"设置",进入系统设 ...
- c# 发送邮件保存服务器,c#-使用SmtpClient时如何保存电子邮件而不是发送电子邮件?...
c#-使用SmtpClient时如何保存电子邮件而不是发送电子邮件? 我正在使用SmtpClient发送带有附件的电子邮件.但是,对于某些批次,我们需要以某种方式保存MailMessage而不是发送它 ...
- 2022-05-10:在字节跳动,大家都使用飞书的日历功能进行会议室的预订,遇到会议高峰时期, 会议室就可能不够用,现在请你实现一个算法,判断预订会议时是否有空的会议室可用。 为简化问题,这里忽略会议
2022-05-10:在字节跳动,大家都使用飞书的日历功能进行会议室的预订,遇到会议高峰时期, 会议室就可能不够用,现在请你实现一个算法,判断预订会议时是否有空的会议室可用. 为简化问题,这里忽略会议 ...
- 禅道bug同步到飞书
主要分成两大部分 1.在飞书开发者后台开发一个可以给用户发送消息的应用,如果需要把消息同步到群组还需要开启一个群组机器人(很简单) 2.查询禅道数据库,编辑消息发送给应用机器人或者群组机器人 1.创建 ...
- 当我们聊飞书时,我们应该聊什么?
飞书,2020年的明星产品.沉寂了许久的产品界,终于迎来了话题明星. 我们已经聊腻了抖音快手短视频,看烦了直播电商小商店.现在我们终于转移了视线,转移到了飞书身上.没错,这次还是字节跳动. 那么,当我 ...
- python call agilent com_PyVISA通过RS232(USB)与安捷伦34970A通信时出现超时错误
这是我第一次尝试使用Pyvisa,以便使用RS232连接(使用USB端口)与Agilent 34970A进行通信.在 这就是发生在我身上的事情,插入基本的第一行:IN: import visa IN: ...
最新文章
- android 在一个Activity(A)中结束另一个Activity(B)
- 同步、异步、阻塞、非阻塞
- node.js入门 - 9.api:http
- ASA防火墙16 SSL/×××
- RoseHA集群:RHEL+RoseMirror+Oracle【2】
- excel vba 使用mschart_VBA专题108:使用VBA操控Excel界面之在功能区中添加内置控件...
- SQL ROUND函数用法
- 题解-Codeforces671D Roads in Yusland
- VC++实现ip数据包分析
- CIELAB色差计算
- Bcm96xx 系列芯片 SDK介绍(二)
- html怎么让鼠标自动移动位置,手把手教你编作弊软件之 鼠标自动移动/点击
- 车载Android导航系统framework层面上的系统修改问题汇总
- 那点你不知道的XHtml(Xml+Html)语法基础(DTD、XSD)
- Microservices 基础理论
- VulnHub 靶场--October
- Java-springboot生鲜电商项目(四)商品模块
- 2021李宏毅老师最新40节机器学习课程!附课件+视频资料
- 怎么重置imac_如何重置Mac Pro?四种重置Macbook Pro的方法
- 在挑战中成长:CTO的生存与发展之道
热门文章
- 35岁不是程序员职场中的绊脚石
- java开发手机app_java 怎么开发手机app接口?
- 16S rRNArDNA测序分析
- java格林时间转换_Java 格林威治时间字符串转本地Date对象
- 阐明iOS证书和provision文件
- deno计算机语言什么意思,一篇文章告诉你什么是Deno!
- Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth【论文解读】
- Linu系统——基础知识1
- 《遥远的救世主》(摘录)
- 苍穹官网HTML源码带音乐