mirror of
https://github.com/looching/status-checker.git
synced 2026-04-05 19:05:02 +08:00
60 lines
1.7 KiB
Python
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)
|
|
|