Honest question, why does it matter what version of python lambda supports (or any framework / language for that matter)?
Couldn’t you just pick the go runtime for example and have it execute the framework / language you want with minimal overhead given it will be a call between two processes running on same host, which you can keep running between invocations.
> why does it matter what version of python lambda supports (or any framework / language for that matter)?
Python 3.7 is a lot faster (30 - 40%) than Python 3.6 for certain types of functions.
And you can't (easily) just install Python 3.7 from another runtime, because it has a ton of dependencies and takes minutes to compile. So even if it's technically possible, it precludes a lot of use cases.
I actually dealt with a similar problem a couple years ago, we were trying to get numpy on Lambda but there's C compilation that needs to happen. What I ended up doing was provisioning an EC2 instance with the same settings as the environment that Lambda uses, then building everything there, and shoving the binaries in the Lambda. It worked, I'm pretty sure the same thing would work for building Python.
For a lot of data processing and indigestion in a commercial setting, the standard library is often enough.
Had a Lambda that parsed a file attached to an incoming email, and it worked very well. Even with complex packages like lxml, it usually isn't an issue. Seems like it might be tricky with some scientific packages or ML stuff though, but Lambdas aren't great for those workloads anyway, although the 15 minute runtime increase has helped.
For the preconfigured Docker version, yeah. But for the regular Python Beanstalk they released 3.6 at roughly the same time that Lambda released 3.6 support, so maybe there is some hope there.
20 comments
[ 4.0 ms ] story [ 46.9 ms ] threadCouldn’t you just pick the go runtime for example and have it execute the framework / language you want with minimal overhead given it will be a call between two processes running on same host, which you can keep running between invocations.
If you follow the "Run any language" approach, you need to bundle the python interpreter and any libraries required.
Python 3.7 is a lot faster (30 - 40%) than Python 3.6 for certain types of functions.
And you can't (easily) just install Python 3.7 from another runtime, because it has a ton of dependencies and takes minutes to compile. So even if it's technically possible, it precludes a lot of use cases.
Had a Lambda that parsed a file attached to an incoming email, and it worked very well. Even with complex packages like lxml, it usually isn't an issue. Seems like it might be tricky with some scientific packages or ML stuff though, but Lambdas aren't great for those workloads anyway, although the 15 minute runtime increase has helped.