6 ms·
Anything by Sebastian Ramirez (fastapi), Samuel Colvin (pydantic), or the encode team (starlette). World class stuff. https://github.com/tiangolo https://gith
by kortex 5y ago
Anything by Sebastian Ramirez (fastapi), Samuel Colvin (pydantic), or the encode team (starlette).
World class stuff.
https://github.com/tiangolo https://github.com/tiangolo
https://github.com/samuelcolvin/pydantic https://github.com/samuelcolvin/pydantic
https://github.com/encode https://github.com/encode
- unbanned 5y agoFastapi is far from world class in any category other than usage. >Fast: Very high performance, on par with NodeJS and Go. Is a downright lie
- slrainka 5y agoBack it up with some evidence
- boustrophedon 5y agoNot the parent, but evidence was pretty easy to find[0]. fastapi comes in around 250-300th place in most of the benchmarks. ¯\_(ツ)_/¯ [0] https://www.techempower.com/benchmarks https://www.techempower.com/benchmarks
- faizshah 5y agoThat chart shows fastapi and nestjs are 2 of the fastest libraries among dynamic languages. And nestjs is <20% faster than fastapi because fastify is <20% faster than starlette. Not sure what this has to do with the library’s quality though, it is a high quality modern python library.
- Zababa 5y ago> That chart shows fastapi and nestjs are 2 of the fastest libraries among dynamic languages. With only JavaScript, Perl, Lua, PHP, Python and TypeScript enabled, fastapi is 64th and nestjs is 73rd, out of 136 libaries. They have a score that's ~10 times lower than the fastest libraries.
- faizshah 5y agoYou have to deselect platforms first off but even then you will still see starlette and fastify on the list being compared to frameworks like nestjs and fastapi. The anomaly is workerman/swoole based PHP libraries which are significantly faster than other dynamic languages frameworks by 2-10x it’s not that express and Koa and fastapi etc are slow it’s that PHP is an anomaly. This is the problem with this benchmark it’s very misleading.
- Zababa 5y agoThis is not an anomaly. Workerman and Swoole are asynchronous PHP frameworks. Node is asynchronous by default, so Express/Koa/Fastify/NestJS are asynchronous. Starlette is an ASGI framework/toolkit, so it's asynchronous too. FastAPI is based on Starlette. The thing is that asynchronous PHP is way faster than asynchronous Python or asynchronous JS. There is nothing misleading about this. If you need performance, PHP is a better choice than Python or Javascript
- faizshah 5y agoIf you have to deselect 20 default filters and then read through the frameworks in the list to see which ones are fully featured web frameworks in order to evaluate whether a library is suitably fast for your next project it is misleading. But again, I'm not sure what this has to do with it being a high quality modern python library.
- Zababa 5y ago> If you have to deselect 20 default filters and then read through the frameworks in the list to see which ones are fully featured web frameworks in order to evaluate whether a library is suitably fast for your next project it is misleading. It is not, this benchmark is purely about speed, not about being "suitable for your next project". You're the one adding all these other constraints. You only need to deselect some filters when you're doing something like comparing dynamic languages, which you did and wasn't even the initial claim discussed. I also doubt most people would call FastAPI "suitable for your next project" compared to something like Django or Flask that is already well known and maintained. > But again, I'm not sure what this has to do with it being a high quality modern python library. We're in a subthread discussing a claim on the FastAPI website that it's "Fast: Very high performance, on par with NodeJS and Go.", and how it's obviously wrong for Go, and possibly wrong for NodeJS.
- chris_hawkes 5y agoNestJS is what I use for my website, https://www.codehawke.com https://www.codehawke.com. I have no idea if this provides any speed burst over fastapi, but I'll say it's a lot of code making Nestjs run. It can't be a good choice for basic static/serverless apps. These benchmarks are questionable.
- Olegt0rr 5y ago
- Zababa 5y agoIn the composite benchmark, fastapi is 75th, express (the most popular node framework) is 94th, Gin (a popular go framework) is 55th, NodeJS is 56th. In the continuous benchmarks, that you can see here [1], taking the last one that has finished at the time of this post (run id 31abee0e-b0c5-414f-9288-216c48e3a70e): Fastapi is 81st, Express 107th, Gin 57th, NodeJS 63rd. In the fortunes part, plain Go is always higher than Gin but varies wildly, from ~15% to ~43%. FastAPI itself is around 7% I think Express is still the most used JS framework, by a large margin, so claiming to be faster than NodeJS may be fair, as most people thinking about NodeJS will think Express. For Go, you have to be very generous with the "on par", to the point that it's almost meaningless in my opinion. Especially since frameworks are less popular in Go, people tend to use the standard library, which has great performance here. [1]: https://tfb-status.techempower.com/ https://tfb-status.techempower.com/
- est 5y agoEvidence: asyncio based DB bindings are rare and not well supported.
- jamil7 5y agoI use it for a side project, I had to disable a lot of it’s useful features to get anything resembling performance out of it. A lot of this seems to stem from Pydantic though but is in no way as fast as Go out of the box and I also feel they should remove that line.
- richardw 5y agoDo you have any opinion on whether it’s a good example of a modern Python project, as per OP’s request?
- gigatexal 5y agoHrmm. But is the code pythonic? I’d say it is. That’s what the OP is looking for.
- mkl95 5y ago> Fastapi is far from world class in any category other than usage. Imho FastAPI's weakest point is maintenance. The Github repo has 800+ open issues and 400+ open PRs. Tiangolo is the only user that constantly makes non trivial contributions. I just can't see that being sustainable in the long term if all those items are not actively triaged.
- kortex 5y agoYeah it is definitely in the wildly popular upswing phase. I'm hoping it attracts a crew of maintainers to take some of the burden off. The one thing it has going for it is much of the heavy lifting is done by starlette, maintained by encode.io, which is actively funded. It's not trying to be rails, rather it's relying on other libraries and packages to add functionality.
- mmcnl 5y agoThe documentation is the worst I've ever seen. There is no API reference! Just a bunch of incohesive tutorials that hopefully overlap with what you're trying to achieve.
- mkl95 5y agoI agree, but as someone who has been working with Django for years, my standards are pretty high, and I'm opinionated when it comes to docs. Check out my latest post on HN. Seemingly the creator and single maintainer is ignoring requests from developers to let other people maintain the project. I used FastAPI at work some time ago, but I can't see myself using it again anytime soon. Imho relying on someone's personal project for software that's going to be in production indefinitely is a big risk.
- mmcnl 5y agoI've never seen a library that's remotely popular without an API reference. I don't think that's a high standard.
- 5y ago
- kortex 5y agoOP asked for good projects to read. I think the code quality is very high, the documentation is great, it's been a joy to use, and it's been more than fast enough for my purposes. I didn't make that speed claim, though I am aware that tidbit is controversial.