Hacker News new | past | comments | ask | show | jobs | submit | alsadi's comments login

Untill the entire scope of this is identified I suggest activating the kill switch

https://bcksp.blogspot.com/2024/03/how-to-disable-xz-backdoo...


Many things have changed since the old days. In PEP 3333 sendfile is exposed as opposed to PEP 333 (so in the WSGI days they had no way of doing it, but in ASGI they can do it).

The assumption that nginx is always there no longer hold, specially in microservices, ex. Running behind haproxy (does not service static files) or running bechind cloud provides like AWS ALB.


BTW being ASGI is not excuse because ASGI spec (PEP 3333) have a section on how to expose and make use of sendfile kernel routine.

https://peps.python.org/pep-3333/#optional-platform-specific...


You’re correct, sort of. But you’re not testing JUST FastAPI’s performance, you’re also testing Uvicorn’s. For them to be equivalent tests, both need the same run patterns. It’s closer to comparing Flask running as a script with flask running behind gunicorn as written and as I read it.

And no, I’m not going to fix your benchmarks for you. This does not provide any value to me but does come at a time cost.

I appreciate you raising the issue and performing research on it, that’s valuable and I applaud you for that. I simply don’t believe that this is a valid benchmark from a technical soundness perspective.


As I pointed out in my other comment, serving a static file should be a single call to a kernel routine called sendfile (sendfile in c or in python io.sendfile or loop.sendfile). No loop, no memory copy, no further context switch.

Again if you think I was not fair to fastapi, suggest a change to the fastapi part. Do not cripple the competing solution.

If you want believe the time is wasted by the introduction of uvicorn layer as opposed to pure python implementation, I can run the fastapi in pure python ASGI without that layer, it would be worse. Because you uvicorn is one of the best implements.


here I've eliminated uvicorn, nothing changed

https://gist.github.com/muayyad-alsadi/3a1e1cdbafca34df8b178...


I made it like that to be as fair as possible and as simple as possible. I've done other experiments with same results. If you think I was not fair to the fastapi part feel free to edit the fastapi part in the form of github gist. And give me the link.


It's reported here and they suggest adding nginx with x-accel which is basically surrending.

https://github.com/tiangolo/fastapi/issues/5803


Computers are just infinite tape marked out into squares... (Turing machine). A pyramid is just a stack of cubic rocks.


The earth is just a ball of mud


It's a ball bearing covered in dust


I do agree. When I first see it I knew that. Comparing two sequences (actual dom and dom) to find diff is like O(n^2) and the assumption that dom ops is expensive is a lie (premature optimization). Dom ops on ids and classes and fragments is very fast. In most cases a slow dom is always a developer fault failing to use fragments.


How about making it redis+msgpack vs. postgresql json-like?


2015


Thanks! Updated.


We are big pharam, give us tons of money and hope that we cure you! We don't! we just treat you.


Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: