Spaces:
Running
Running
import yaml | |
from flask import Flask, request, jsonify | |
from concurrent.futures import ThreadPoolExecutor | |
from src.task import Task | |
from uuid import uuid4 | |
app = Flask(__name__) | |
# Global thread pool | |
executor = ThreadPoolExecutor(max_workers=4) # Adjust max_workers as per your requirement | |
# thread safe task map to store task status | |
task_map = {} | |
def create_task_youtube(): | |
global task_map | |
data = request.get_json() | |
if not data or 'youtubeLink' not in data: | |
return jsonify({'error': 'YouTube link not provided'}), 400 | |
youtube_link = data['youtubeLink'] | |
launch_config = yaml.load(open("./configs/local_launch.yaml"), Loader=yaml.Loader) | |
task_id = str(uuid4()) | |
task = Task.fromYoutubeLink(youtube_link, task_id, launch_config) | |
task_map[task_id] = task | |
# Submit task to thread pool | |
executor.submit(task.run) | |
return jsonify({'taskId': task.task_id}) | |
def get_task_status(taskId): | |
global task_map | |
if taskId not in task_map: | |
return jsonify({'error': 'Task not found'}), 404 | |
return jsonify({'status': task_map[taskId].status}) | |
if __name__ == '__main__': | |
app.run(debug=True) | |