From 6f2b40e16817a16c16308b72ca9faee825d5d2c1 Mon Sep 17 00:00:00 2001 From: rivques <38469076+rivques@users.noreply.github.com> Date: Sat, 10 Sep 2022 13:01:21 -0400 Subject: [PATCH 1/2] close #174 by sending entire webserver response to esp32 in one go if possible --- adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py index 956a36c..c4a4059 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py +++ b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py @@ -119,11 +119,16 @@ def finish_response(self, result): response += "{0}: {1}\r\n".format(*header) response += "\r\n" self._client_sock.send(response.encode("utf-8")) - for data in result: - if isinstance(data, bytes): - self._client_sock.send(data) - else: - self._client_sock.send(data.encode("utf-8")) + if isinstance(result, bytes): # send whole response if possible (see #174) + self._client_sock.send(result) + elif isinstance(result, str): + self._client_sock.send(result.encode("utf-8")) + else: # fall back to sending byte-by-byte + for data in result: + if isinstance(data, bytes): + self._client_sock.send(data) + else: + self._client_sock.send(data.encode("utf-8")) gc.collect() finally: if self._debug > 2: From c50a1037fa4492efd4755b61bd5abfd50746f4a7 Mon Sep 17 00:00:00 2001 From: rivques <38469076+rivques@users.noreply.github.com> Date: Sat, 10 Sep 2022 14:23:25 -0400 Subject: [PATCH 2/2] make black happy --- adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py index c4a4059..2d7a098 100644 --- a/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py +++ b/adafruit_esp32spi/adafruit_esp32spi_wsgiserver.py @@ -119,11 +119,11 @@ def finish_response(self, result): response += "{0}: {1}\r\n".format(*header) response += "\r\n" self._client_sock.send(response.encode("utf-8")) - if isinstance(result, bytes): # send whole response if possible (see #174) + if isinstance(result, bytes): # send whole response if possible (see #174) self._client_sock.send(result) elif isinstance(result, str): self._client_sock.send(result.encode("utf-8")) - else: # fall back to sending byte-by-byte + else: # fall back to sending byte-by-byte for data in result: if isinstance(data, bytes): self._client_sock.send(data)