I migrated a side project from Flask to FastAPI recently. It's deployed to GCP Cloud Run with a Cloud SQL database, and integrated with Auth0 and Stripe. I use tiangolo's uvicorn-gunicorn-fastapi base image.
It's been really nice for me. As easy as flask, plenty of docs for real world applications, and the performance is great. The emphasis on type systems in the docs was ideal for me.
I was deciding between this and DRF after wanting something more opinionated than just Flask, and I'm really happy with my decision so far.
Similarly nothing but praise and admiration for FastAPI, having also migrated over a couple of Flask projects. A couple of additional plus points to above:
1. Integration with jinja2 , meaning I was able to use all my view templates virtually untouched.
2. uvicorn supported out the box, meaning there's a production-grade web server ready to go. It'll need some work for very high volumes I'd imagine - but for low-medium load (c.10s-100s req/sec) it's working just fine for me.
Flask is clear that the built-in server is not for prod use. It's not a show-stopper in the great scheme of things. But it's just one less thing to worry about with FastAPI. Building a docker image is trivially easy, so lots of hosting options.
regarding the uvicorn-gunicorn-fastapi image - is it really a good idea? you'll likely gain some other dependencies as the project grows, and having some dependencies in external docker image (the tiangolo's one pip installs fastapi + stuff), and some installed by your own means sounds like a lot of trouble headache quite soon... that's why I personally went with just python image, and installing everything from pipenv
It's been really nice for me. As easy as flask, plenty of docs for real world applications, and the performance is great. The emphasis on type systems in the docs was ideal for me.
I was deciding between this and DRF after wanting something more opinionated than just Flask, and I'm really happy with my decision so far.