From 0c364ec5971e5b541f65d07b9b3070db9970f8f0 Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Wed, 27 Nov 2024 22:53:35 +0100 Subject: [PATCH] Lower cpu usage --- serial/serial_server.py | 91 ++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/serial/serial_server.py b/serial/serial_server.py index fadf1f9..52f38f0 100644 --- a/serial/serial_server.py +++ b/serial/serial_server.py @@ -105,58 +105,57 @@ def write(text : str, write : bool): def main(): while True: # Read a line from the serial port - if ser.in_waiting > 0: - line = ser.readline().decode('utf-8').strip() - if line.startswith("HTTP_REQUEST") or line.startswith("HTTP_BINARY"): - print(f">>> {line}") - # Parse the parameters - try: - parts = line.split(' ', 3) - timeout_ms, request_type, url_path = int(parts[1]), parts[2], parts[3] + line = ser.readline().decode('utf-8').strip() + if line.startswith("HTTP_REQUEST") or line.startswith("HTTP_BINARY"): + print(f">>> {line}") + # Parse the parameters + try: + parts = line.split(' ', 3) + timeout_ms, request_type, url_path = int(parts[1]), parts[2], parts[3] - ignore_timeout = timeout_ms <= 0 - binary = line.startswith("HTTP_BINARY") + ignore_timeout = timeout_ms <= 0 + binary = line.startswith("HTTP_BINARY") - if ignore_timeout: - timeout_ms = 1000; + if ignore_timeout: + timeout_ms = 1000; - # Construct the full URL - full_url = f"{PROTOCOL}://{HOSTNAME}:{PORT}{url_path}" + # Construct the full URL + full_url = f"{PROTOCOL}://{HOSTNAME}:{PORT}{url_path}" - # Make the HTTP request based on the type - response = None - if request_type.upper() == "GET": - response = requests.get(full_url, timeout=timeout_ms / 1000) - elif request_type.upper() == "POST": - response = requests.post(full_url, timeout=timeout_ms / 1000) - else: - write("400 Unsupported request type", not ignore_timeout) - continue + # Make the HTTP request based on the type + response = None + if request_type.upper() == "GET": + response = requests.get(full_url, timeout=timeout_ms / 1000) + elif request_type.upper() == "POST": + response = requests.post(full_url, timeout=timeout_ms / 1000) + else: + write("400 Unsupported request type", not ignore_timeout) + continue - # Send response back over serial - if response != None: - if binary: - if response.status_code != 200: - write("00000000", not ignore_timeout) - else: - length = len(response.content) - ser.write(f"{length:>08}".encode('utf-8')) - ser.write(response.content) - print(f"<<< (Binary data of {length} bytes)") + # Send response back over serial + if response != None: + if binary: + if response.status_code != 200: + write("00000000", not ignore_timeout) else: - status_code = response.status_code - body = response.text.replace('\n', ' ') # Trim and sanitize body for serial - message = f"{status_code} {body}" - write(message, not ignore_timeout) - except (IndexError, ValueError) as e: - write(f"400 Malformed request {str(e)}", not ignore_timeout) - except requests.exceptions.ReadTimeout as e: - print("Request timed out.") - pass - except requests.exceptions.RequestException as e: - write("500 Request failed", not ignore_timeout) - else: - print(f"[LOG] {line}") + length = len(response.content) + ser.write(f"{length:>08}".encode('utf-8')) + ser.write(response.content) + print(f"<<< (Binary data of {length} bytes)") + else: + status_code = response.status_code + body = response.text.replace('\n', ' ') # Trim and sanitize body for serial + message = f"{status_code} {body}" + write(message, not ignore_timeout) + except (IndexError, ValueError) as e: + write(f"400 Malformed request {str(e)}", not ignore_timeout) + except requests.exceptions.ReadTimeout as e: + print("Request timed out.") + pass + except requests.exceptions.RequestException as e: + write("500 Request failed", not ignore_timeout) + else: + print(f"[LOG] {line}") if __name__ == "__main__": while True: