123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import re
- import time
- from concurrent.futures import ThreadPoolExecutor, wait
- from common.redis import get_pq_id
- from video_cover_method.cover_method import CoverMethod
- # 限制最大线程数为 10
- max_workers = 10
- def get_video_id():
- video_ids = set() # 使用集合去重
- for i in range(10):
- video_id = get_pq_id()
- if video_id:
- video_ids.add(video_id)
- else:
- return list( video_ids )
- return list( video_ids )
- def process_video_cover(video_id):
- try:
- # video_id = int(video_id)
- video_id = str(video_id).strip( "b'" ) # 去掉前面的 b 和两边的引号
- CoverMethod.cover_method(str(video_id))
- except Exception as e:
- print( f"视频ID:{video_id}处理任务时出现异常:{e}")
- def video_cover_task_start():
- with ThreadPoolExecutor( max_workers=max_workers) as executor:
- while True:
- try:
- video_ids = get_video_id()
- if not video_ids:
- print("没有数据等待30秒")
- time.sleep(30)
- continue
- # 提交所有任务并等待完成
- futures = [executor.submit( process_video_cover, video_id ) for video_id in video_ids]
- wait( futures ) # 等待所有任务完成
- except Exception as e:
- print(f"异常信息{e}")
- time.sleep(3)
- continue
- if __name__ == '__main__':
- video_cover_task_start()
|