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()