job_cover_method.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import time
  2. from concurrent.futures import ThreadPoolExecutor, as_completed
  3. from common.redis import get_pq_id
  4. from video_cover_method.cover_method import CoverMethod
  5. # 限制最大线程数为 10
  6. max_workers = 10
  7. def get_video_id():
  8. video_ids = []
  9. for i in range(10):
  10. video_id = get_pq_id()
  11. if video_id:
  12. video_ids.append( video_id )
  13. else:
  14. return video_ids
  15. return video_ids
  16. def process_video_cover(video_id):
  17. try:
  18. CoverMethod.cover_method( int( video_id ) )
  19. except Exception as e:
  20. print( "处理任务时出现异常:", e)
  21. def video_cover_task_start():
  22. with ThreadPoolExecutor( max_workers=max_workers) as executor:
  23. futures = []
  24. while True:
  25. video_ids = get_video_id()
  26. if not video_ids:
  27. print("没有数据等待30秒")
  28. time.sleep(30)
  29. continue
  30. for video_id in video_ids:
  31. futures.append( executor.submit( process_video_cover, video_id ) )
  32. # 等待完成的任务并清理
  33. for future in as_completed( futures ):
  34. futures.remove( future )
  35. if __name__ == '__main__':
  36. video_cover_task_start()