mangum icon indicating copy to clipboard operation
mangum copied to clipboard

Support for streaming?

Open kmulka-bloomberg opened this issue 2 years ago • 3 comments

Is there any support for streaming response output? Like websockets, server-sent events, or similar?

kmulka-bloomberg avatar Jul 21 '23 15:07 kmulka-bloomberg

Just to provide a bit more context to @kmulka-bloomberg's question, response streaming is supported by lambda since mid 2023: https://aws.amazon.com/blogs/compute/introducing-aws-lambda-response-streaming/

rdettai avatar Oct 17 '23 13:10 rdettai

@rdettai response streaming is supported with NodeJS runtime only, according to your link. :) And upping the size from 6MB to 20MB looks hilarious.

pkit avatar Nov 02 '23 14:11 pkit

response streaming is supported with NodeJS runtime only

You're right! At the time they released the feature they only added support for it in the Node runtime. Pretty weird! It is supported in other SDKs now, such as Rust. It should also be doable in Python but strangely I couldn't find any reference about that.

upping the size from 6MB to 20MB looks hilarious

Yes, pushing the limit a few megabytes further is only a minor improvements on that front as you'll probably still need some sort of offloading through S3 for larger responses anyway. Note that the 20MB limit is a soft limit (at least when your not running through API Gateway). It means you can increase it by contacting the support. But it's probably not a very good idea as payloads above 6MB are throttled to 2MBps.

Note that the benefit of having a streamed response is not just for transferring larger payloads, it's also interesting to

  • reduce "time to first byte"
  • some exotic workloads, e.g a Lambda that performs highly selective search across a massive dataset: you might be interested to get the search results as they come in to have a more interactive UI on the caller side (again, not compatible with API Gateway 😢)

rdettai avatar Nov 06 '23 07:11 rdettai