12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- """
- @author: luojunhui
- @tools: PyCharm MarsCodeAI && DeepSeek
- """
- import sys
- import signal
- import time
- import threading
- from tqdm import tqdm
- from coldStartTasks.multi_modal import GenerateTextFromVideo
- from config import apolloConfig
- class VideoProcessing:
- """
- video processing task
- """
- def __init__(self):
- self.generate_text_from_video = GenerateTextFromVideo()
- self.generate_text_from_video.connect_db()
- self.running = True
- self.lock = threading.Lock()
- self.upload_thread = None
- self.convert_thread = None
- def upload_task(self):
- """
- upload task to google cloud storage
- """
- while self.running:
- with self.lock:
- tqdm.write("start upload_video_to_google_ai task...")
- upload_videos_count = self.generate_text_from_video.upload_video_to_google_ai()
- tqdm.write("upload_video_to_google_ai task completed, total upload_videos_count: {}".format(upload_videos_count))
- time.sleep(600)
- def convert_task(self):
- """
- convert video to text
- """
- while self.running:
- with self.lock:
- tqdm.write("Starting convert_video_to_text_with_google_ai task...")
- self.generate_text_from_video.convert_video_to_text_with_google_ai()
- tqdm.write("convert_video_to_text_with_google_ai() task completed.")
- time.sleep(10)
- def stop(self):
- """停止所有线程"""
- with self.lock:
- tqdm.write("Stopping threads...")
- self.running = False # 设置标志为 False,通知线程退出
- # 等待线程结束
- if self.upload_thread:
- self.upload_thread.join()
- if self.convert_thread:
- self.convert_thread.join()
- tqdm.write("All threads stopped.")
- def signal_handler(sig, frame):
- """捕获信号,优雅退出"""
- video_processing.stop()
- sys.exit(0)
- if __name__ == '__main__':
- video_processing = VideoProcessing()
- # 创建并启动第一个线程(上传任务)
- video_processing.upload_thread = threading.Thread(target=video_processing.upload_task)
- video_processing.upload_thread.daemon = False
- video_processing.upload_thread.start()
- # 创建并启动第二个线程(转换任务)
- video_processing.convert_thread = threading.Thread(target=video_processing.convert_task)
- video_processing.convert_thread.daemon = False
- video_processing.convert_thread.start()
- # 注册信号处理函数
- signal.signal(signal.SIGINT, signal_handler)
- signal.signal(signal.SIGTERM, signal_handler)
- # 主线程保持运行,防止程序退出
- while video_processing.running:
- time.sleep(1)
|