match_rate_app.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """
  2. @author: luojunhui
  3. """
  4. import time
  5. import schedule
  6. from datetime import datetime, timedelta
  7. from functions import MatchRate, RateDetail
  8. from feishu import Feishu
  9. def job():
  10. """
  11. 定时任务方法
  12. :return:
  13. """
  14. MR = MatchRate()
  15. RD = RateDetail()
  16. F = Feishu(document_token="QF4YsYNJHhSOy3t6OM7cYfrBnq3")
  17. today_str = datetime.today().strftime("%Y%m%d")
  18. e_time = MR.generate_today_stamp(today_str)
  19. s_time = MR.generate_yesterday_stamp(today_str)
  20. utc_dt = datetime.utcfromtimestamp(e_time / 1000)
  21. beijing_time = utc_dt + timedelta(hours=8)
  22. result_list = MR.match_rate(start_time_stamp=s_time, end_time_stamp=e_time)
  23. result_obj = RD.rate_and_error_list(result_list)
  24. rate_list = [
  25. beijing_time.strftime("%Y-%m-%d"),
  26. result_obj['total_count'],
  27. result_obj['success_count'],
  28. result_obj['success_count'] / result_obj['total_count'] if result_obj['total_count'] else None,
  29. result_obj['fail_count'],
  30. result_obj['fail_count'] / result_obj['total_count'] if result_obj['total_count'] else None,
  31. result_obj['processing_count'],
  32. result_obj['processing_count'] / result_obj['total_count'] if result_obj['total_count'] else None,
  33. ]
  34. error_list = result_obj['error_list']
  35. # insert rate_list
  36. rate_sheet_id = "c65def"
  37. F.prepend_value(sheet_id=rate_sheet_id, values=[["******"]], ranges="A2:A2")
  38. F.insert_value(sheet_id=rate_sheet_id, values=[rate_list], ranges="A2:H2")
  39. # insert error_list
  40. error_sheet_id = "67wu2O"
  41. for item in error_list:
  42. F.prepend_value(sheet_id=error_sheet_id, values=[["*****"]], ranges="A2:A2")
  43. F.insert_value(sheet_id=error_sheet_id, values=[[datetime.utcfromtimestamp(e_time / 1000).strftime("%Y%m%d")] + item], ranges="A2:D2")
  44. if __name__ == '__main__':
  45. # job()
  46. schedule.every().day.at("01:00").do(job)
  47. while True:
  48. schedule.run_pending()
  49. time.sleep(1)