前言

最近应公司要求要把禅道上的超时任务、超出时间没有开始的任务,发送到公司飞书群里。

禅道是干什么的,怎么部署我这里就不再赘述了,可以参考下面的连接。

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

每天禅道超时任务、超时未开始任务发送飞书提醒相关推荐

  1. php 客户端socket长连接超时,[PHP] socket客户端时的超时问题

    连接socket分为连接超时和读取超时 $sock=stream_socket_client("www.google.com:80", $errno,$errstr,2);    ...

  2. python怎么连接远程服务器没有按时响应_python通过paramiko执行ssh命令时设置超时时间 - Python - 服务器之家...

    python通过paramiko执行ssh命令时设置超时时间 发布时间:2014-06-17

  3. 指为服务器指定超时时限为5分钟,微信服务器连接公众号开发者服务器时发生超时,超时时间为5秒,这是什么问题引起的?...

    Appid: wx10d9ea1837d670fe 昵称: 中山电信 时间: 2021-04-13 18:06:01 内容: 微信服务器连接公众号开发者服务器时发生超时,超时时间为5秒 次数: 5分钟 ...

  4. 响应服务器421,微信服务器连接公众号开发者服务器时发生超时,超时时间为5秒? | 微信开放社区...

    之前分析是响应返回的格式有问题,经过排查返回的是success,只有关键词回复是回复的xml跟官方格式一致,现在改成返回空串,问题依旧存在.麻烦帮忙排查下 问题1:微信服务器连接公众号开发者服务器时发 ...

  5. 电脑桌面云便签敬业签怎么设置软件启动时显示超时提醒弹窗?

    一.打开已登录的敬业签Windows电脑桌面云便签,点击左上方用户头像,或按下默认快捷键Alt+Z,也可以在云便签右上方找到"设置">"设置",进入系统设 ...

  6. c# 发送邮件保存服务器,c#-使用SmtpClient时如何保存电子邮件而不是发送电子邮件?...

    c#-使用SmtpClient时如何保存电子邮件而不是发送电子邮件? 我正在使用SmtpClient发送带有附件的电子邮件.但是,对于某些批次,我们需要以某种方式保存MailMessage而不是发送它 ...

  7. 2022-05-10:在字节跳动,大家都使用飞书的日历功能进行会议室的预订,遇到会议高峰时期, 会议室就可能不够用,现在请你实现一个算法,判断预订会议时是否有空的会议室可用。 为简化问题,这里忽略会议

    2022-05-10:在字节跳动,大家都使用飞书的日历功能进行会议室的预订,遇到会议高峰时期, 会议室就可能不够用,现在请你实现一个算法,判断预订会议时是否有空的会议室可用. 为简化问题,这里忽略会议 ...

  8. 禅道bug同步到飞书

    主要分成两大部分 1.在飞书开发者后台开发一个可以给用户发送消息的应用,如果需要把消息同步到群组还需要开启一个群组机器人(很简单) 2.查询禅道数据库,编辑消息发送给应用机器人或者群组机器人 1.创建 ...

  9. 当我们聊飞书时,我们应该聊什么?

    飞书,2020年的明星产品.沉寂了许久的产品界,终于迎来了话题明星. 我们已经聊腻了抖音快手短视频,看烦了直播电商小商店.现在我们终于转移了视线,转移到了飞书身上.没错,这次还是字节跳动. 那么,当我 ...

  10. python call agilent com_PyVISA通过RS232(USB)与安捷伦34970A通信时出现超时错误

    这是我第一次尝试使用Pyvisa,以便使用RS232连接(使用USB端口)与Agilent 34970A进行通信.在 这就是发生在我身上的事情,插入基本的第一行:IN: import visa IN: ...

最新文章

  1. android 在一个Activity(A)中结束另一个Activity(B)
  2. 同步、异步、阻塞、非阻塞
  3. node.js入门 - 9.api:http
  4. ASA防火墙16 SSL/×××
  5. RoseHA集群:RHEL+RoseMirror+Oracle【2】
  6. excel vba 使用mschart_VBA专题108:使用VBA操控Excel界面之在功能区中添加内置控件...
  7. SQL ROUND函数用法
  8. 题解-Codeforces671D Roads in Yusland
  9. VC++实现ip数据包分析
  10. CIELAB色差计算
  11. Bcm96xx 系列芯片 SDK介绍(二)
  12. html怎么让鼠标自动移动位置,手把手教你编作弊软件之 鼠标自动移动/点击
  13. 车载Android导航系统framework层面上的系统修改问题汇总
  14. 那点你不知道的XHtml(Xml+Html)语法基础(DTD、XSD)
  15. Microservices 基础理论
  16. VulnHub 靶场--October
  17. Java-springboot生鲜电商项目(四)商品模块
  18. 2021李宏毅老师最新40节机器学习课程!附课件+视频资料
  19. 怎么重置imac_如何重置Mac Pro?四种重置Macbook Pro的方法
  20. 在挑战中成长:CTO的生存与发展之道

热门文章

  1. 35岁不是程序员职场中的绊脚石
  2. java开发手机app_java 怎么开发手机app接口?
  3. 16S rRNArDNA测序分析
  4. java格林时间转换_Java 格林威治时间字符串转本地Date对象
  5. 阐明iOS证书和provision文件
  6. deno计算机语言什么意思,一篇文章告诉你什么是Deno!
  7. Instance Segmentation by Jointly Optimizing Spatial Embeddings and Clustering Bandwidth【论文解读】
  8. Linu系统——基础知识1
  9. 《遥远的救世主》(摘录)
  10. 苍穹官网HTML源码带音乐