8 ms·
After using both Flask and FastAPI extensively I can attest that Flask is the better technology. Flask is extremely stable and has solid organization around the
by nop_slide 11mo ago
After using both Flask and FastAPI extensively I can attest that Flask is the better technology. Flask is extremely stable and has solid organization around them via Pallets. This is a great benefit as they are keeping the ecosystem moving forward and stable.
https://palletsprojects.com/ https://palletsprojects.com/
Versus FastAPI which is lead by a single maintainer which you can search back on HN about opinions on how he's led things.
Flask also has at time of writing only 5 open issues and 6 open PRs, while FastAPI has over 150 PRs open and 40 pages(!) of discussions (which I believe they converted most of their issues to discussions).
Lastly on the technical side, I found Flasks threaded model with a global request context to be really simple to reason about. I'm not totally sold on async Python anymore and encountered odd memory leaks in FastAPI when trying to use it.
- odie5533 11mo agoFlask is missing... pydantic, dependency injection, openapi, swagger, real async.
- nop_slide 11mo agohttps://github.com/pallets-eco/flask-pydantic https://github.com/pallets-eco/flask-pydantic https://luolingchun.github.io/flask-openapi3/v4.x/ https://luolingchun.github.io/flask-openapi3/v4.x/ > dependency injection While nice I never found this to be a critical deciding factor of using a technology. > real async If you really want it there is Quart which is real async https://github.com/pallets/quart https://github.com/pallets/quart I'm not a huge async fan in python anymore so not it's not a huge issue for me. But there are definitely options for Flask if you want to use async.
- odie5533 11mo agoflask-openapi3 looks good but has only 246 stars. Would be worried using it in production. flask-pydantic has no openapi tie-in. Oh look, there's me bumping the openapi request that's been an issue since 2020: https://github.com/pallets-eco/flask-pydantic/issues/17 https://github.com/pallets-eco/flask-pydantic/issues/17 which has an open PR since 2022. It's possible between Quart and svcs (for DI) and some Pydantic/Marshmallow/OpenAPI extension you might be able to mimic what FastAPI does. But I'd just use FastAPI. I use async too. It's a lot easier to scale in my opinion. Do none of these pieces matter to you? Like do you not do any data validation or care about OpenAPI?
- nop_slide 11mo agoAt $JOB we're using both flask-pydantic and flask-openapi via those libraries and they are serving us just fine. But yes async does not matter to me.
- wiseowise 11mo agoOf course you can assemble FastAPI scrim scratch, that’s not the point. The selling point is everything integrated, like Django.
- Exoristos 11mo agoSo nothing of importance.
- odie5533 11mo agoWhat do you do for data validation?
- callamdelaney 11mo agoDependency injection in fastapi honestly feels like a horrible afterthought. Flask's g is much easier to reason about, and 99% of projects don't need the 'performance improvements' of async.
- nine_k 11mo agoFlask is old. It's mature, nothing left to add, little if anything remains to fix because nothing is really broken. OTOH its static typing story is pretty weak, and this is likely unfixable by design. Its use of one-letter global objects also feels a bit weird. It's the "choose boring technology" poster child, of sorts: get things done reliable, without using any design younger than 15 years ago.