refactor: 优化report.py中的主流程和后续状态处理逻辑,添加时间间隔控制以提高性能

This commit is contained in:
晓丰 2025-06-15 12:33:48 +08:00
parent 81780ecd0a
commit 2aace9ffe9

View File

@ -1,5 +1,4 @@
import time import time
from DB import DBVidcon, DBSA from DB import DBVidcon, DBSA
from report_video import DailymotionClient from report_video import DailymotionClient
import logger import logger
@ -8,45 +7,56 @@ db = DBVidcon()
d = DailymotionClient() d = DailymotionClient()
k = { k = {
"open":1, "open": 1,
"solved":2, "solved": 2,
"awaiting your reply":3, "awaiting your reply": 3,
} }
last_main_run = 0
last_subsequent_run = 0
MAIN_INTERVAL = 60 * 5 # 每 5 分钟执行一次
SUBSEQUENT_INTERVAL = 60 * 60 # 每 60 分钟执行一次
while True: while True:
start_time = int(time.time()) now = int(time.time())
lis = db.get_report_video() # 处理主流程
if len(lis) > 0: if now - last_main_run >= MAIN_INTERVAL:
for li in lis: last_main_run = now
logger.logger.info(f"name:{li['name_title']},link:{li['link']} ") lis = db.get_report_video()
try: if len(lis) > 0:
info,report_id,status,report_ts, = d.process_ticket(li['name_title'], li['link']) for li in lis:
subsequent_status = k.get(status, 1) logger.logger.info(f"name:{li['name_title']},link:{li['link']} ")
db.update_fight_record_status(li['id'],report_id, 2, f"http://123.58.197.91:5000/image/{info}", report_ts, subsequent_status) try:
db.flush() info, report_id, status, report_ts = d.process_ticket(li['name_title'], li['link'])
except Exception as e: subsequent_status = k.get(status, 1)
logger.logger.error(f"ID:{li['id']}, e:{e}") db.update_fight_record_status(
db.update_fight_record_status(li['id'], 0,3, str(e)) li['id'], report_id, 2, f"http://123.58.197.91:5000/image/{info}",
time.sleep(1 * 60) 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 now - last_subsequent_run >= SUBSEQUENT_INTERVAL:
if len(subsequent_list) == 0: last_subsequent_run = now
time.sleep(60 * 5) subsequent_list = db.get_subsequent_report_video()
else: if len(subsequent_list) > 0:
for li in subsequent_list: for li in subsequent_list:
rs_id = li['id'] rs_id = li['id']
r_id = li['report_id'] r_id = li['report_id']
logger.logger.info(f"subsequent id:{rs_id},report_id:{r_id} ") logger.logger.info(f"subsequent id:{rs_id},report_id:{r_id} ")
try: try:
subsequent_status, info = d.report_follow_up(r_id) 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}") db.update_subsequent_status_by_id(
except Exception as e: rs_id, subsequent_status, f"http://123.58.197.91:5000/image/{info}"
logger.logger.error(f"ID:{rs_id}, e:{e}") )
db.update_subsequent_status_by_id(rs_id, 1, str(e)) 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) time.sleep(5)
remain = max(0, 60 * 5 - used)
if remain > 0:
logger.logger.info(f"当前轮耗时 {used:.1f} 秒,休眠 {remain:.1f}")
time.sleep(remain)