xiaomi_monitor.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # -*- encoding=utf8 -*-
  2. import time
  3. import json
  4. import pymysql
  5. import requests
  6. import pandas as pd
  7. from DBUtils.PooledDB import PooledDB
  8. URL = 'http://47.95.217.180:9999/monitoring/xiaomi'
  9. #创建数据库连接池
  10. def createPool(db_config):
  11. spool = PooledDB(pymysql, 5, **db_config)
  12. return spool
  13. def saveData():
  14. timestamp = time.time()
  15. str_time = time.strftime('%H:%M',time.localtime(timestamp))
  16. str_time_int = int(str(str_time).split(':')[-1])
  17. print(str(str_time).split(':')[-1])
  18. ins_sql = """ INSERT INTO balance_monitoring VALUES(0,%s,%s,1,%s) """
  19. res = requests.get(url = URL)
  20. #print(response.status_code)
  21. #print(response.text)
  22. data_json = json.loads(res.text)
  23. df = pd.DataFrame(list(data_json))
  24. df.columns = ['used_time']
  25. df['used_time'] = df['used_time'].str.replace(r'\n','').astype(float)
  26. #print(df)
  27. total_count = len(df)
  28. count_1 = len(df[df['used_time'] <= 0.1])
  29. count_2 = len(df[(df['used_time'] > 0.1) & (df['used_time'] <= 0.2)])
  30. count_3 = len(df[(df['used_time'] > 0.2) & (df['used_time'] <= 0.3)])
  31. count_4 = len(df[(df['used_time'] > 0.3) & (df['used_time'] <= 0.4)])
  32. count_5 = len(df[(df['used_time'] > 0.4) & (df['used_time'] <= 0.5)])
  33. count_6 = len(df[(df['used_time'] > 0.5) & (df['used_time'] <= 1)])
  34. count_7 = len(df[df['used_time'] > 1])
  35. #print(total_count)
  36. #print(count_1)
  37. count_list = []
  38. for i in range(7):
  39. temp_count =locals()["count_{}".format(i+1)]
  40. #print(temp_count)
  41. temp_percent = "%.2f%%"%(temp_count/total_count * 100)
  42. #print(temp_percent)
  43. count_list.append([temp_count,temp_percent])
  44. msg = '''小米下单时间统计:\n 0-0.1秒 订单数量为:{},百分比为:{};\n 0.1-0.2秒 订单数量为:{}, 百分比为:{};\n 0.2-0.3秒
  45. 订单数量为:{} ,百分比为:{} ;\n 0.3-0.4秒 订单数量为:{},百分比为:{};\n 0.4-0.5秒订 单数量为:{},百分比为:{};\n
  46. 0.5-1秒 订单数量为:{},百分比为:{};\n 1秒以上 订单数量为:{},百分比为:{}。'''.format(count_list[0][0],
  47. count_list[0][1],count_list[1][0],count_list[1][1],count_list[2][0],count_list[2][1],count_list[3][0],count_list[3][1],
  48. count_list[4][0],count_list[4][1],count_list[5][0],count_list[5][1],count_list[6][0],count_list[6][1])
  49. #print(msg)
  50. cursor = conn.cursor()
  51. try:
  52. #print(3333)
  53. cursor = conn.cursor()
  54. cursor.execute(ins_sql, (msg,'小米下单时间监控群',int(timestamp)))
  55. except:
  56. conn.rollback()
  57. print('数据回滚')
  58. cursor.close()
  59. conn.close()
  60. if __name__ == '__main__':
  61. #监控消息数据库连接信息
  62. db_config = {
  63. 'host' : '127.0.0.1',
  64. 'port' : 9001,
  65. 'user' : 'root',
  66. 'password' : 'nibuzhidaowozhidao',
  67. 'db' : 'monitoring',
  68. 'charset' : 'utf8',
  69. 'autocommit' : 1
  70. }
  71. conn = createPool(db_config).connection()
  72. saveData()