JSROOT does not print much debug output at this place, but content-type in response header must include multipart string. It is starting point in the modules/io.mjs code around line 3045.
the result of the above curl command is the following:
HTTP/1.1 416 REQUESTED RANGE NOT SATISFIABLE
Date: Tue, 15 Apr 2025 20:13:28 GMT
Server: Apache/2.4.58 (Ubuntu)
Content-Range: bytes */1135099764
Content-Length: 177
Content-Type: text/html; charset=utf-8
<!doctype html>
<html lang=en>
<title>416 Requested Range Not Satisfiable</title>
<h1>Requested Range Not Satisfiable</h1>
<p>The server cannot provide the requested range.</p>
When I use /files route as in the last version of the send_file_partial function I am able to get rid of 416 error but the request is still single:
just to let you know that I was able to resolve the issue with multirange requests in flask. The function I used for sending partial file chunk (last version of send_file_partial above) had a bug on this line:
match = re.finditer(r"bytes=(\d+)-(\d*)", range_header)
and should be
match = re.finditer(r"(\d+)-(\d*)", range_header)
So this is now solved. The only issue I now have is that when I use treeDraw with your improvements like staged and nmatch:1 options I can’t access the fHistogram object of the resulting graph and I need this to retrieve the axes for the multigraph at the end, like this:
With treeDraw there is null for fHistogram while it was correctly filled when I used simple draw. Is there anything to get fHistogram object or some workaround to retrieve axes?
If you using treeDraw, you get just TGraph object produced. fHistogram member set only after graph is drawn by JSROOT. Therefore you first need to draw graph and then can modify graphical attributes.
perfect, that works! Now I am able to get the plots in ~5s with all the improvements. Thanks again for all your help and patience in resolving this issue.