add persistency, update server url in client and server js
This commit is contained in:
parent
468861d36f
commit
3dea109886
7 changed files with 65 additions and 35 deletions
|
@ -47,7 +47,7 @@ A local http file server of some kind.
|
|||
|
||||
Go into the correct directory with the code
|
||||
|
||||
cd watcher
|
||||
cd client
|
||||
|
||||
with python's http server
|
||||
|
||||
|
|
4
client/handoff.sh
Normal file → Executable file
4
client/handoff.sh
Normal file → Executable file
|
@ -3,4 +3,6 @@
|
|||
RUN_NUMBER=0
|
||||
LINK_NUMBER=0
|
||||
|
||||
curl http://10.1.0.155/link/handoff/${RUN_NUMBER}/${LINK_NUMBER}
|
||||
SERVER_URL="10.1.0.155:5000"
|
||||
|
||||
curl http://${SERVER_URL}/link/handoff/${RUN_NUMBER}/${LINK_NUMBER}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<form name="link">
|
||||
<div class="input-group">
|
||||
<label for="url-field">Watch server url</label>
|
||||
<input name="url-field" type="text" value="localhost:5000" required></input>
|
||||
<input name="url-field" type="text" value="10.1.0.155:5000" required></input>
|
||||
</div>
|
||||
<div class="input-group">
|
||||
<label for="run-field">Run id</label>
|
||||
|
|
4
client/start.sh
Normal file → Executable file
4
client/start.sh
Normal file → Executable file
|
@ -3,4 +3,6 @@
|
|||
RUN_NUMBER=0
|
||||
LINK_NUMBER=0
|
||||
|
||||
curl http://10.1.0.155/link/start/${RUN_NUMBER}/${LINK_NUMBER}
|
||||
SERVER_URL="10.1.0.155:5000"
|
||||
|
||||
curl http://${SERVER_URL}/link/start/${RUN_NUMBER}/${LINK_NUMBER}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import asyncio
|
||||
import atexit
|
||||
import datetime
|
||||
import json
|
||||
import os.path
|
||||
import socket
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
from time import sleep, time
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
|
@ -13,7 +16,7 @@ from flask_cors import CORS
|
|||
|
||||
sio = socketio.Server()
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
CORS(app, resources={r"/*": {"origins": "*"}})
|
||||
app.wsgi_app = socketio.WSGIApp(sio, app.wsgi_app)
|
||||
|
||||
# We request users to send the run number to prevent accidentially getting old requests from a previous run
|
||||
|
@ -31,6 +34,21 @@ function_times = []
|
|||
function_data = []
|
||||
|
||||
|
||||
def save_data():
|
||||
with open('data.json', 'w') as outfile:
|
||||
json.dump(db, outfile)
|
||||
|
||||
|
||||
def load_data():
|
||||
with open('data.json', 'r') as infile:
|
||||
db = json.load(infile)
|
||||
|
||||
|
||||
data_file = Path("data.json")
|
||||
if data_file.is_file():
|
||||
load_data()
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
@ -38,16 +56,22 @@ def index():
|
|||
|
||||
@app.route("/start_run/<run_index>")
|
||||
def start_run(run_index):
|
||||
request_data = live_request(f'/start_run/{run_index}') #make request show up on the live requests
|
||||
if "Authorization" not in request.headers or request.headers[
|
||||
'Authorization'] != "dsfqlkjmlkjls,,n":
|
||||
return "Unauthorized"
|
||||
|
||||
request_data = live_request(
|
||||
f'/start_run/{run_index}') #make request show up on the live requests
|
||||
|
||||
if not run_index.isdigit():
|
||||
return f'{run_index} is not a number'
|
||||
|
||||
db["current_run"] = run_index
|
||||
starttime = time()
|
||||
if run_index in db["run_data"]:
|
||||
return "This run is already ran, take another number."
|
||||
db["current_run"] = run_index
|
||||
starttime = time()
|
||||
db["run_data"][run_index] = {"starttime": starttime, "data": {}}
|
||||
save_data()
|
||||
# TODO send start request to the first person in the chain. Probably a zeus part already written as example
|
||||
sio.emit('start_run', run_index)
|
||||
return f'Run {run_index} started at {starttime}'
|
||||
|
@ -55,14 +79,14 @@ def start_run(run_index):
|
|||
|
||||
@app.route("/link/start/<run>/<link_index>")
|
||||
def link_start(run, link_index):
|
||||
request_data = live_request(f'/link/start/{run}/{link_index}') #make request show up on the live requests
|
||||
request_data = live_request(f'/link/start/{run}/{link_index}'
|
||||
) #make request show up on the live requests
|
||||
|
||||
if not run.isdigit() or not link_index.isdigit():
|
||||
return f'{run} and/or {link_index} is not a number'
|
||||
|
||||
start = time()
|
||||
|
||||
|
||||
if db["current_run"] != run:
|
||||
response = "Wrong run number, check that you update your run", 404
|
||||
else:
|
||||
|
@ -71,6 +95,7 @@ def link_start(run, link_index):
|
|||
response = "you already started in this run. Ignoring this request."
|
||||
else:
|
||||
run_data[link_index] = {"id": link_index, "start": time()}
|
||||
save_data()
|
||||
sio.emit('link_start', run_data[link_index])
|
||||
response = "Success."
|
||||
stop = time()
|
||||
|
@ -79,17 +104,21 @@ def link_start(run, link_index):
|
|||
return response
|
||||
|
||||
|
||||
@app.route("/link/handoff/<run>/<index>")
|
||||
def link_handoff(run, index):
|
||||
request_data = live_request(f'/link/handoff/{run}/{link_index}') #make request show up on the live requests
|
||||
@app.route("/link/handoff/<run>/<link_index>")
|
||||
def link_handoff(run, link_index):
|
||||
request_data = live_request(f'/link/handoff/{run}/{link_index}'
|
||||
) #make request show up on the live requests
|
||||
|
||||
if not run.isdigit() or not index.isdigit():
|
||||
return f'{run} and/or {index} is not a number'
|
||||
if not run.isdigit() or not link_index.isdigit():
|
||||
return f'{run} and/or {link_index} is not a number'
|
||||
|
||||
if db["current_run"] != run:
|
||||
return "Wrong run number, check that you updated you run", 404
|
||||
else:
|
||||
link_data = db["run_data"][run]["data"][index]
|
||||
if index not in db["run_data"][run]["data"]:
|
||||
return "This link did not start yet..."
|
||||
link_data = db["run_data"][run]["data"][link_index]
|
||||
save_data()
|
||||
if "handoff" in link_data:
|
||||
return "you already handed off control during this run. Ignoring this request"
|
||||
else:
|
||||
|
@ -134,7 +163,7 @@ if __name__ == '__main__':
|
|||
# scheduler = BackgroundScheduler()
|
||||
# scheduler.add_job(func=plot_graph, trigger="interval", seconds=5)
|
||||
# scheduler.start()
|
||||
app.run(host="0.0.0.0", debug=True)
|
||||
app.run(host="10.1.0.155", debug=True)
|
||||
|
||||
# shut down the scheduler when exiting the app
|
||||
# atexit.register(lambda: scheduler.shutdown())
|
||||
|
|
|
@ -23,7 +23,7 @@ require(['jquery', 'socket.io'], function(jq, io) {
|
|||
|
||||
|
||||
$(function() {
|
||||
const socket = io('localhost:5000');
|
||||
const socket = io('10.1.0.155:5000');
|
||||
socket.on('start_run', function(run_index) {});
|
||||
|
||||
socket.on('link_start', function(link_data) {
|
||||
|
|
|
@ -21,31 +21,28 @@
|
|||
<body>
|
||||
<div class="container">
|
||||
<div id="current_run" class="card">
|
||||
<div class="item">
|
||||
<div>
|
||||
0
|
||||
</div>
|
||||
<div>
|
||||
<button type="button">Start</button>
|
||||
</div>
|
||||
<div>
|
||||
<i class="fas fa-question" style="color:grey"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card__title">
|
||||
Links
|
||||
<!-- <div class="item">
|
||||
<div>
|
||||
0
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" onclick="$.get('10.1.0.155:5000/start_run/0')">Start</button>
|
||||
</div>
|
||||
<div>
|
||||
<i class="fas fa-question" style="color:grey"></i>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="card__title">
|
||||
Links
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
|
||||
<div class="card__title">
|
||||
Runs
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="live_requests" class="card">
|
||||
|
||||
<div class="card__title">
|
||||
Live Requests
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue