MonitorAppTask.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # Author renyupeng
  2. # coding=utf-8
  3. # @Time : 2021/11/17 6:48 下午
  4. # @Site :
  5. # @File : MonitorRuixuanTask.py
  6. # @Software: PyCharm
  7. # @contact: renyupeng@c-top.com.cn
  8. # @Tel 1501435553
  9. import datetime
  10. import logging
  11. import os
  12. from Apietl.conn.TidbConn import TidbConn
  13. from Apietl.conn.TidbProConn import TidbProConn
  14. from OuterDataCompareInnerData.Utils.SchedulerList import SchedulerList
  15. from OuterDataCompareInnerData.Utils.sendMessage import feishuMsg
  16. class MonitorRuixuanTask:
  17. def __init__(self):
  18. self.InnerConn = TidbConn.get_connection()
  19. self.OuterConn = TidbProConn.get_connection()
  20. self.table_list = [
  21. 'kuaishou_live_account_report_daily_dw'
  22. , 'kuaishou_live_campaign_report_daily_dw'
  23. , 'kuaishou_live_unit_report_daily_dw'
  24. ]
  25. self.stat_date = (datetime.date.today() + datetime.timedelta(-1)).strftime("%Y%m%d")
  26. def CheckTask(self):
  27. try:
  28. for table in self.table_list:
  29. try:
  30. sql = """select count(1) from `application`.{table} where stat_date={stat_date}""".format(
  31. table=table, stat_date=self.stat_date)
  32. InnertotalNum = TidbConn.quary(self.InnerConn, sql)[0][0]
  33. OutertotalNum = TidbConn.quary(self.OuterConn, sql)[0][0]
  34. print("""{stat_date}日 {table} 内网数量为{InnertotalNum},外网数量为{OutertotalNum}""".format(
  35. stat_date=self.stat_date,
  36. table=table,
  37. InnertotalNum=InnertotalNum,
  38. OutertotalNum=OutertotalNum))
  39. if InnertotalNum == 0:
  40. feishuMsg.send_robot_msg(
  41. """{stat_date}日 {table} 数据为0""".format(stat_date=self.stat_date, table=table))
  42. elif InnertotalNum != OutertotalNum:
  43. feishuMsg.send_robot_msg(
  44. """{stat_date}日 {table} 内网数量为{InnertotalNum},外网数量为{OutertotalNum} 数据不相等 datax
  45. 数据同步启动""".format(
  46. stat_date=self.stat_date,
  47. table=table,
  48. InnertotalNum=InnertotalNum,
  49. OutertotalNum=OutertotalNum))
  50. datax_json = SchedulerList.LiveSchedulerList(table)
  51. os.system('sh /data/datax/application/push_live_pro.sh {stat_date} {table} {datax_json}'.format(
  52. stat_date=self.stat_date, table=table, datax_json=datax_json))
  53. else:
  54. feishuMsg.send_robot_msg(
  55. """{stat_date}日 {table} 内网数量为{InnertotalNum},外网数量为{OutertotalNum} 数据相等 """.format(
  56. stat_date=self.stat_date,
  57. table=table,
  58. InnertotalNum=InnertotalNum,
  59. OutertotalNum=OutertotalNum))
  60. except Exception as e:
  61. logging.error(e)
  62. return -1
  63. TidbConn.conn_close(conn=self.InnerConn)
  64. TidbProConn.conn_close(conn=self.OuterConn)
  65. except Exception as e:
  66. logging.error(e)
  67. return -1
  68. if __name__ == '__main__':
  69. MonitorRuixuanTask().CheckTask()