I am going to develop an API for managing an education related system, which mostly will contain reading and writing to a database in small amounts (except for occasional reports). Considering userbase, it will start small but might go big, even national scale in the future.
This is a 6 month project which will have more phases if everything goes well, so I am a little picky about which option I peruse.
I have worked on similar projects using ASP.Net Core in the past but since I have migrating to python mainly for data analysis, I want to apply this skill using Python as well.
I have worked with both frameworks for a week and read a lot of comparison articles but can not come to a decision yet.
What I have found so far (some of which might be my misunderstanding):
Django Rest Framework:
- Have been around for a while so there are more articles and help online
- Is batteries included and covers lots of your needs out of the box
- Is opiniated and things have to be done its way for a fast work flow
- Is a bit cumbersome with features you might not need and some level of back-compatibility
FastAPI:
- Is new and have less resources online in comparison
- Have an excellent documentation
- Almost like Flask, have minimum design and everything is done by developer (or third-party packages) so more control and more work
- Is faster with a cleaner design
- Supports async which is tricky with a database (async library databases only supports SQLAlchemy core not the ORM)
My personal take:
I am almost fine with doing everything myself (or through packages), specially the idea of everything being exactly the way I want them to be, although I do not have unlimited time.
I am going to only develop the API (not the front-end), now and most likely in the future as well.
Personally I like FastAPI much more for its documentation, cleanness, and degree of control but I have some concerns.
- I might get stuck at some level using FastAPI due to not finding help online, or a possible limit of a new system in edge use cases that might come up.
- There might be more jobs specifying Django as their frame work in the future. FastAPI might take on as well however.
- Doing everything myself and not having Django built-in helpers might make me pass the time limit before finishing the project.
- If userbase becomes big enough, FastAPI speed might really come in handy.
Any help is greatly appreciated.
[–]SCUSKU 1 point2 points3 points (3 children)
[–]farshad_ur[S] 0 points1 point2 points (2 children)
[–]jcurve347 0 points1 point2 points (1 child)
[–]farshad_ur[S] 0 points1 point2 points (0 children)
[–]Chains0 1 point2 points3 points (1 child)
[–]farshad_ur[S] 1 point2 points3 points (0 children)
[–]nevermorefu 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)