# app.py

from flask import Flask, render_template, jsonify
from multiprocessing import Process, Queue
import time

app = Flask(__name__)

# Queue to store task results
task_queue = Queue()
task_process = None


def long_running_task():
    # Simulate a long-running task
    time.sleep(5)
    # Store the result in the task queue
    task_queue.put("Task completed")


@app.route('/')
def index():
    return render_template('index.html')


@app.route('/start-task')
def start_task():
    global task_process

    if task_process is None or not task_process.is_alive():
        # Start the long-running task in a separate process
        task_process = Process(target=long_running_task)
        task_process.start()
        return jsonify({'status': 'Task started'})
    else:
        return jsonify({'status': 'Task already in progress'})


@app.route('/task-status')
def task_status():
    # Check the status of the task
    if task_process is not None and task_process.is_alive():
        status = 'In progress'
    elif not task_queue.empty():
        status = task_queue.get()
    else:
        status = 'Task not started'

    return jsonify({'status': status})


if __name__ == '__main__':
    app.run()
