basic timeout

This commit is contained in:
Hendrik Schutter 2024-04-15 21:07:54 +02:00
parent a5ebf13e97
commit 96fb5c0da4

View File

@ -5,15 +5,17 @@
from http.server import BaseHTTPRequestHandler, HTTPServer from http.server import BaseHTTPRequestHandler, HTTPServer
import paho.mqtt.client as mqtt import paho.mqtt.client as mqtt
from datetime import datetime from datetime import datetime, timedelta
import threading import threading
import time import time
import json import json
import sys import sys
import config import config
scrape_healthy = True scrape_healthy = True
startTime = datetime.now() startTime = datetime.now()
lastMqttReception = datetime.now()
node_metrics = list() node_metrics = list()
mutex = threading.Lock() mutex = threading.Lock()
request_count = 0 request_count = 0
@ -40,9 +42,13 @@ class RequestHandler(BaseHTTPRequestHandler):
def do_GET(self): def do_GET(self):
global request_count global request_count
global lastMqttReception
global scrape_healthy
request_count = request_count + 1 request_count = request_count + 1
#print("Request: " + self.path) #print("Request: " + self.path)
if (self.path.startswith("/metrics")): if (self.path.startswith("/metrics")):
if (datetime.now() - lastMqttReception) > timedelta(hours=7):
scrape_healthy = False
self.get_metrics() self.get_metrics()
else: else:
self.send_response(200) self.send_response(200)
@ -64,7 +70,7 @@ def update_metrics(payload, metadata):
global mutex global mutex
global scrape_healthy global scrape_healthy
mutex.acquire() mutex.acquire()
scrape_healthy = True scrape_healthy = False
node_metrics.clear() node_metrics.clear()
if "Distance" in payload: if "Distance" in payload:
@ -123,6 +129,7 @@ def update_metrics(payload, metadata):
print("set snr: " + str(float(metadata[0]["snr"]))) print("set snr: " + str(float(metadata[0]["snr"])))
node_metrics.append("snr " + str(float(metadata[0]["snr"]))) node_metrics.append("snr " + str(float(metadata[0]["snr"])))
scrape_healthy = True
mutex.release() mutex.release()
def on_connect(mqttc, obj, flags, rc): def on_connect(mqttc, obj, flags, rc):
@ -136,6 +143,7 @@ def on_message(mqttc, obj, msg):
try: try:
uplink_message = parsedJSON["uplink_message"] uplink_message = parsedJSON["uplink_message"]
update_metrics(uplink_message["decoded_payload"], uplink_message["rx_metadata"]) update_metrics(uplink_message["decoded_payload"], uplink_message["rx_metadata"])
lastMqttReception = datetime.now()
except: except:
mutex.acquire() mutex.acquire()
scrape_healthy = False scrape_healthy = False