From fbe324df6fedcea11e38dd0281a1ebc56d2ba907 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Soko=C5=82owski?= Date: Wed, 18 Jan 2023 22:30:55 +0100 Subject: [PATCH] Expose size of bytes of each part of file in `send_file` For fine tuning memory vs time tradeoff. --- adafruit_httpserver/response.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_httpserver/response.py b/adafruit_httpserver/response.py index ab3600f..d6b02d7 100644 --- a/adafruit_httpserver/response.py +++ b/adafruit_httpserver/response.py @@ -171,10 +171,12 @@ def send_file( self, filename: str = "index.html", root_path: str = "./", + buffer_size: int = 2048, ) -> None: """ Send response with content of ``filename`` located in ``root_path``. Implicitly calls ``_send_headers`` before sending the file content. + File is send split into ``buffer_size`` parts. Should be called **only once** per response. """ @@ -196,7 +198,7 @@ def send_file( ) with open(root_path + filename, "rb") as file: - while bytes_read := file.read(2048): + while bytes_read := file.read(buffer_size): self._send_bytes(self.request.connection, bytes_read) self._response_already_sent = True