feat: 添加 update_video_stats_async 方法以支持异步更新视频统计信息
This commit is contained in:
parent
95fed6b6c8
commit
9d1e2033c7
15
DB.py
15
DB.py
@ -591,7 +591,6 @@ class DBSA:
|
|||||||
def update_video_stats(cls, locator:dict, stats:dict) -> int:
|
def update_video_stats(cls, locator:dict, stats:dict) -> int:
|
||||||
"""
|
"""
|
||||||
立即更新 sh_dm_video_v2 表中的统计字段。
|
立即更新 sh_dm_video_v2 表中的统计字段。
|
||||||
|
|
||||||
:param locator: 用于定位行的字典,必须包含: v_xid, rn
|
:param locator: 用于定位行的字典,必须包含: v_xid, rn
|
||||||
:param stats: 需要更新的统计字段,如 {"fans": 633, "videos": 10090, "view": 1678408}
|
:param stats: 需要更新的统计字段,如 {"fans": 633, "videos": 10090, "view": 1678408}
|
||||||
:return: 受影响的行数
|
:return: 受影响的行数
|
||||||
@ -613,4 +612,16 @@ class DBSA:
|
|||||||
)
|
)
|
||||||
with _engine.begin() as conn:
|
with _engine.begin() as conn:
|
||||||
result = conn.execute(stmt)
|
result = conn.execute(stmt)
|
||||||
return result.rowcount
|
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()
|
@ -7,7 +7,7 @@ from threading import Lock
|
|||||||
import requests
|
import requests
|
||||||
from flask import Flask, request, jsonify
|
from flask import Flask, request, jsonify
|
||||||
from requests import RequestException
|
from requests import RequestException
|
||||||
from DB import DBVidcon
|
from DB import DBVidcon, DBSA
|
||||||
|
|
||||||
db = DBVidcon()
|
db = DBVidcon()
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@ -150,7 +150,7 @@ def gettoken(proxy, r=2):
|
|||||||
return copy.deepcopy(headers1)
|
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 = {
|
payload = {
|
||||||
"operationName": "WATCHING_VIDEO",
|
"operationName": "WATCHING_VIDEO",
|
||||||
"variables": {
|
"variables": {
|
||||||
@ -204,6 +204,7 @@ def submit():
|
|||||||
print(f"收到请求: {v_xid}, {rn}")
|
print(f"收到请求: {v_xid}, {rn}")
|
||||||
headers = gettoken(proxy_code)
|
headers = gettoken(proxy_code)
|
||||||
results = get_videoInfo(v_xid, proxy_code, headers)
|
results = get_videoInfo(v_xid, proxy_code, headers)
|
||||||
|
DBSA.update_video_stats(data, results)
|
||||||
return jsonify({
|
return jsonify({
|
||||||
"results": results
|
"results": results
|
||||||
}), 200
|
}), 200
|
||||||
|
Loading…
x
Reference in New Issue
Block a user