diff --git a/DB.py b/DB.py index c92c29d..4b5b24f 100644 --- a/DB.py +++ b/DB.py @@ -591,7 +591,6 @@ class DBSA: def update_video_stats(cls, locator:dict, stats:dict) -> int: """ 立即更新 sh_dm_video_v2 表中的统计字段。 - :param locator: 用于定位行的字典,必须包含: v_xid, rn :param stats: 需要更新的统计字段,如 {"fans": 633, "videos": 10090, "view": 1678408} :return: 受影响的行数 @@ -613,4 +612,16 @@ class DBSA: ) with _engine.begin() as conn: result = conn.execute(stmt) - return result.rowcount \ No newline at end of file + return result.rowcount + + @classmethod + def update_video_stats_async(cls, locator:dict, stats:dict) -> None: + """ + 异步更新 sh_dm_video_v2 表中的统计字段,立即返回,不阻塞调用线程。 + """ + thread = threading.Thread( + target=cls.update_video_stats, + args=(locator, stats), + daemon=True + ) + thread.start() \ No newline at end of file diff --git a/flask_app.py b/flask_app.py index 0438954..d9c2d94 100644 --- a/flask_app.py +++ b/flask_app.py @@ -7,7 +7,7 @@ from threading import Lock import requests from flask import Flask, request, jsonify from requests import RequestException -from DB import DBVidcon +from DB import DBVidcon, DBSA db = DBVidcon() app = Flask(__name__) @@ -150,7 +150,7 @@ def gettoken(proxy, r=2): return copy.deepcopy(headers1) -def get_videoInfo(x_id, proxy_name,headers, r=3): +def get_videoInfo(x_id, proxy_name, headers, r=3): payload = { "operationName": "WATCHING_VIDEO", "variables": { @@ -204,6 +204,7 @@ def submit(): print(f"收到请求: {v_xid}, {rn}") headers = gettoken(proxy_code) results = get_videoInfo(v_xid, proxy_code, headers) + DBSA.update_video_stats(data, results) return jsonify({ "results": results }), 200