From 2aace9ffe94a4bb19685c111526b30539b707648 Mon Sep 17 00:00:00 2001 From: Franklin-F Date: Sun, 15 Jun 2025 12:33:48 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96report.py?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E4=B8=BB=E6=B5=81=E7=A8=8B=E5=92=8C=E5=90=8E?= =?UTF-8?q?=E7=BB=AD=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=97=B6=E9=97=B4=E9=97=B4=E9=9A=94?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E4=BB=A5=E6=8F=90=E9=AB=98=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report.py | 84 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 47 insertions(+), 37 deletions(-) diff --git a/report.py b/report.py index d03d355..5f4c1f9 100644 --- a/report.py +++ b/report.py @@ -1,5 +1,4 @@ import time - from DB import DBVidcon, DBSA from report_video import DailymotionClient import logger @@ -8,45 +7,56 @@ db = DBVidcon() d = DailymotionClient() k = { - "open":1, - "solved":2, - "awaiting your reply":3, + "open": 1, + "solved": 2, + "awaiting your reply": 3, } + +last_main_run = 0 +last_subsequent_run = 0 + +MAIN_INTERVAL = 60 * 5 # 每 5 分钟执行一次 +SUBSEQUENT_INTERVAL = 60 * 60 # 每 60 分钟执行一次 + while True: - start_time = int(time.time()) + now = int(time.time()) - lis = db.get_report_video() - if len(lis) > 0: - for li in lis: - logger.logger.info(f"name:{li['name_title']},link:{li['link']} ") - try: - info,report_id,status,report_ts, = d.process_ticket(li['name_title'], li['link']) - subsequent_status = k.get(status, 1) - db.update_fight_record_status(li['id'],report_id, 2, f"http://123.58.197.91:5000/image/{info}", report_ts, subsequent_status) - db.flush() - except Exception as e: - logger.logger.error(f"ID:{li['id']}, e:{e}") - db.update_fight_record_status(li['id'], 0,3, str(e)) - time.sleep(1 * 60) + # 处理主流程 + if now - last_main_run >= MAIN_INTERVAL: + last_main_run = now + lis = db.get_report_video() + if len(lis) > 0: + for li in lis: + logger.logger.info(f"name:{li['name_title']},link:{li['link']} ") + try: + info, report_id, status, report_ts = d.process_ticket(li['name_title'], li['link']) + subsequent_status = k.get(status, 1) + db.update_fight_record_status( + li['id'], report_id, 2, f"http://123.58.197.91:5000/image/{info}", + report_ts, subsequent_status + ) + db.flush() + except Exception as e: + logger.logger.error(f"ID:{li['id']}, e:{e}") + db.update_fight_record_status(li['id'], 0, 3, str(e)) + time.sleep(60) # 出错延迟 - subsequent_list = db.get_subsequent_report_video() - if len(subsequent_list) == 0: - time.sleep(60 * 5) - else: - for li in subsequent_list: - rs_id = li['id'] - r_id = li['report_id'] - logger.logger.info(f"subsequent id:{rs_id},report_id:{r_id} ") - try: - subsequent_status, info = d.report_follow_up(r_id) - db.update_subsequent_status_by_id(rs_id, subsequent_status, f"http://123.58.197.91:5000/image/{info}") - except Exception as e: - logger.logger.error(f"ID:{rs_id}, e:{e}") - db.update_subsequent_status_by_id(rs_id, 1, str(e)) + if now - last_subsequent_run >= SUBSEQUENT_INTERVAL: + last_subsequent_run = now + subsequent_list = db.get_subsequent_report_video() + if len(subsequent_list) > 0: + for li in subsequent_list: + rs_id = li['id'] + r_id = li['report_id'] + logger.logger.info(f"subsequent id:{rs_id},report_id:{r_id} ") + try: + subsequent_status, info = d.report_follow_up(r_id) + db.update_subsequent_status_by_id( + rs_id, subsequent_status, f"http://123.58.197.91:5000/image/{info}" + ) + except Exception as e: + logger.logger.error(f"ID:{rs_id}, e:{e}") + db.update_subsequent_status_by_id(rs_id, 1, str(e)) - used = int(time.time() - start_time) - remain = max(0, 60 * 5 - used) - if remain > 0: - logger.logger.info(f"当前轮耗时 {used:.1f} 秒,休眠 {remain:.1f} 秒") - time.sleep(remain) \ No newline at end of file + time.sleep(5) \ No newline at end of file