Hi,
I’ve read quite few articles about Flask Vs quart.
But the one that I found do not go deep… :/ (and are big adept of copy/past …)
So, beside the extra features (ASGI, HTTP/2, WebSockets…)
I’m wondering if async/await in this context give a real boost of performance ?
When a client connect to a worker
I don’t think that while await, will allow another client to use the same work ? or am I wrong ?
Do you have any metric ? Or if you switched from Flask to Quart di you noticed a gain ? lost ?
Thanks.
I am yet to go search about that Quart framework, this is the first time I heard of it. Yet, I am sure this is all about scalability. If you have an app with too many concurrent users, like an e-commerce for a huge brand, then it does make a significant difference to use async. Meanwhile, most projects deal with 20 concurrent users at peak time and see no performance difference, just the cost of having to debug a sophisticated tooling. So, I’d recommend to follow simpler principles. Of course, the curiosity is there and trying out cool new stuff is fun. Oh, one more thing 1 worker can serve N concurrent users easily, it’s not 1:1 in practice. Depends on the code and what you’re app offers. Say for example you offer generation of PDF report, if you have 100 concurrent users at peak time, but even then only 5 ask for such a report for downloading, you can get away with 2 workers on a VM with just 1 cpu easily.
Thank you very much for your feedback @[email protected] & @[email protected]
A few months ago I evaluated Quart to see if it would be a better option for https://piefed.social. It was easy to port my code from Flask to Quart and everything was mostly working within an hour or two. In the end I decided not to proceed with Quart because the performance gains only happen when there are many concurrent users and that time might never come. However the extra complexity and potential for problems was there immediately, so I just stayed with trusty old Flask. It’s good to know that switching to Quart is straightforward if I need it in the future.