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