from flask import Flask, request, jsonify from models import Task from scheduler import start_scheduler, stop_scheduler, stop_specific_task, scheduled_jobs app = Flask(__name__) @app.route('/add_task', methods=['POST']) def add_task(): data = request.json task, created = Task.get_or_create(name=data['name'], defaults={ 'curl': data['curl'], 'interval': data['interval'] }) if not created: return jsonify({'error': 'Task with this name already exists'}), 400 return jsonify({'message': 'Task added successfully'}) @app.route('/start_task', methods=['POST']) def start_task(): data = request.json task = Task.get(Task.name == data['name']) task.running = True task.save() return jsonify({'message': 'Task started successfully'}) @app.route('/stop_task', methods=['POST']) def stop_task(): data = request.json stop_specific_task(data['name']) return jsonify({'message': 'Task stopped successfully'}) @app.route('/get_tasks', methods=['GET']) def get_tasks(): tasks = Task.select() task_list = [] for task in tasks: task_list.append({ 'name': task.name, 'curl': task.curl, 'interval': task.interval, 'running': task.running, 'result': task.result }) return jsonify(task_list) @app.route('/remove_task', methods=['DELETE']) def remove_task(): data = request.json task = Task.get(Task.name == data['name']) if task.running: stop_specific_task(task.name) task.delete_instance() return jsonify({'message': 'Task removed successfully'}) @app.route('/stop_scheduler', methods=['GET']) def stop(): stop_scheduler() return jsonify({'message': 'Scheduler stopped successfully'}) # stop scheduler when the app is stopped or killed @app.teardown_appcontext def shutdown_scheduler(exception=None): stop_scheduler() if __name__ == '__main__': start_scheduler() app.run(debug=True)