1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import time
- from concurrent.futures import ThreadPoolExecutor
- from loguru import logger
- from video_processing.video_processing import VideoProcessing
- max_workers = 1 # 最大线程数
- def video_ai_task_start():
- redis_task_list = ['task:video_ai_recommend', 'task:video_ai_top']
- futures = [] # 用来存储任务的 Future 对象
- task_index = 0
- with ThreadPoolExecutor( max_workers=max_workers ) as executor:
- while True:
- futures = [f for f in futures if not f.done()]
- if len(futures) < max_workers:
- try:
- # 提交新任务
- future = executor.submit( process_video_ai, redis_task_list[task_index] )
- futures.append( future )
- task_index += 1
- if task_index >= len( redis_task_list ):
- task_index = 0
- time.sleep( 1 )
- except Exception as e:
- logger.error( f"异常信息: {e}" )
- time.sleep(1)
- else:
- time.sleep(1)
- def process_video_ai(redis_task):
- try:
- logger.info( f"开始执行任务: {redis_task}" )
- video_processor = VideoProcessing()
- video_processor.get_video( redis_task )
- logger.success( f"执行完成: {redis_task}" )
- time.sleep( 1 ) # 模拟处理时间
- except Exception as e:
- logger.error( f"处理任务时出现异常: {e}" )
- time.sleep( 1 ) # 出现异常时,等待5秒再处理
- if __name__ == '__main__':
- video_ai_task_start()
|