memray and later a custom request wrapper that output python gc statistics.
Our main candidates for the leak are: grpc, asgi server itself, psycopg, django channels. All leaked to some degree. Alas, it did not became clear what caused the runaway leak at 30 MB/s. Capturing flamegraphs just before OOM kills would require some more engineering.
Granian contained these situations until upgradings later that year made the system more stable to begin with.
It was and is a life saver. Our django app suffered from runaway memory leaks (quite a story). We were not able to track down the root cause exactly. There are numerous, similar issues with uvicorn or other webservers. Granian contained these problems. Multi process management is also reliable.
I'd love to make it work with flightsql or HTTP endpoints returning arrow IPC [0]!
Did you consider using perspective for last-mile charting [1]? Building your own seems like a huge chunk of work. Well done!