60 lines
1.7 KiB
Python

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('/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)