import time from concurrent.futures import ThreadPoolExecutor, as_completed 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 = [] for i in range(10): video_id = get_pq_id() if video_id: video_ids.append( video_id ) else: return video_ids return video_ids def process_video_cover(video_id): try: CoverMethod.cover_method( int( video_id ) ) except Exception as e: print( "处理任务时出现异常:", e) def video_cover_task_start(): with ThreadPoolExecutor( max_workers=max_workers) as executor: futures = [] while True: video_ids = get_video_id() if not video_ids: print("没有数据等待30秒") time.sleep(30) continue for video_id in video_ids: futures.append( executor.submit( process_video_cover, video_id ) ) # 等待完成的任务并清理 for future in as_completed( futures ): futures.remove( future ) if __name__ == '__main__': video_cover_task_start()