Switch from socket.io to REST for cadence streaming in attempt to fix timeout issue

This commit is contained in:
Peter Stockings
2023-01-26 21:53:54 +11:00
parent ef3de84621
commit 9ec6693031
4 changed files with 35 additions and 11 deletions

View File

@@ -1 +1 @@
web: gunicorn --worker-class eventlet -w 1 --timeout 600 app:app
web: gunicorn app:app --workers=4

28
app.py
View File

@@ -3,7 +3,7 @@ import json
from urllib import response
from dateutil.relativedelta import relativedelta
import os
from flask import Flask, render_template
from flask import Flask, render_template, request
import jinja_partials
from flask_htmx import HTMX
import minify_html
@@ -18,7 +18,7 @@ app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
jinja_partials.register_extensions(app)
htmx = HTMX(app)
socketio = SocketIO(app, cors_allowed_origins='*')
#socketio = SocketIO(app, cors_allowed_origins='*')
db = DataBase(app)
@@ -37,12 +37,12 @@ def response_minify(response):
return response
@socketio.on('message')
def handle_message(data):
current_time = datetime.now().replace(
microsecond=0).isoformat()
print('' + current_time + ' ' + json.dumps(data))
db.insert_cadence(data['rpm'], data['id'])
# @socketio.on('message')
# def handle_message(data):
# current_time = datetime.now().replace(
# microsecond=0).isoformat()
# print('' + current_time + ' ' + json.dumps(data))
# db.insert_cadence(data['rpm'], data['id'])
@ app.route("/")
@@ -73,7 +73,17 @@ def overview(device_id):
return render_template('overview.html', last_cadence=last_cadence, cadences=cadences[-15:], graph_data=graph_data)
@ app.route("/cadence", methods=['POST'])
def cadence():
data = request.get_json()
print('' + datetime.now().replace(microsecond=0).isoformat() +
' ' + json.dumps(data))
db.insert_cadence(data['rpm'], data['id'])
return 'ok'
if __name__ == '__main__':
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
socketio.run(app, host='127.0.0.1', port=port)
#socketio.run(app, host='127.0.0.1', port=port)
app.run(host='127.0.0.1', port=port)

4
db.py
View File

@@ -59,3 +59,7 @@ class DataBase():
def get_device(self, device_id):
return self.execute('SELECT * FROM device WHERE id = %s', [device_id], one=True)
def insert_cadence(self, rpm, device_id):
self.execute('INSERT INTO cadence (rpm, device_id) VALUES (%s, %s)',
[rpm, device_id], commit=True)

View File

@@ -24,6 +24,7 @@ async function connect(props) {
console.log("> Notifications started");
characteristic.addEventListener("characteristicvaluechanged", props.onChange);
console.log("> Characteristic value changed event listener added");
/*
socket = io({
reconnection: true,
reconnectionDelay: 1000,
@@ -43,6 +44,7 @@ async function connect(props) {
}
// else the socket will automatically try to reconnect
});
*/
}
async function disconnect() {
@@ -88,7 +90,15 @@ function parseCSC(e) {
if (prevRes) {
let rpm = revsToRPM(prevRes, res);
if (rpm > 0)
socket.emit("message", { rpm: parseFloat(rpm.toFixed(2)), id: 1 });
//socket.emit("message", { rpm: parseFloat(rpm.toFixed(2)), id: 1 });
fetch("/cadence", {
method: "POST",
headers: {
Accept: "application/json, text/plain, */*",
"Content-Type": "application/json",
},
body: JSON.stringify({ rpm: parseFloat(rpm.toFixed(2)), id: 1 }),
});
}
prevRes = res;
return res;