Comments (2)
Thanks for the feedback. It makes sense!
from uvicorn-gunicorn-docker.
So, if you have several def
functions that only wait there, they will block the thread they are in. And if you will still have a limited amount of threads, and if all of them are handling a request that is blocking with a sleep, then that will end up blocking the concurrency.
If you use async
and asyncio.sleep
, that "sleeps", but doesn't block and lets the rest of the code continue executing, without holding the resources. Because it is not really using the CPU, just waiting for something else.
But if you are doing something that is CPU intensive, like training a model, then you should probably still use def
so that it runs in threadpool and doesn't block the rest, but if you run several of those at the same time, there will be a point where all your CPUs are used in full. And then it doesn't matter which tricks you use, your machine won't be able to handle more concurrency, just because all the CPU available is used.
Now, if that's the case and you are using something that is CPU intensive, if your use case is simple enough, and you expect a small concurrency, let's say, it's an internal tool used only by a small internal team, then it might be OK to just do it all internally in your FastAPI app.
But for anything bigger than that, you will probably end up needing to have more machines dedicating to training the models (or whatever is the slow resource-intensive task). And then your API would just receive requests and report the status of the training of those tasks, but the API code wouldn't be in charge of actually training the models.
Then, the way you would coordinate those different machines (or at least separate worker processes) would be with a tool like Celery or ARQ.
If you check the project generators, those have Celery setup and included by default.
If you want to try something new, I think ARQ is probably a very good option.
from uvicorn-gunicorn-docker.
Related Issues (20)
- Only prints `log_data` if `LOG_LEVEL` == `DEBUG`
- Custom gunicorn configuration file for logging
- python3.8-slim image: Time not Synced to Local Machine HOT 1
- python 3.10 image HOT 5
- Image for ARM64 chips HOT 4
- Is there a docker image that include both mysql and python? HOT 1
- Feature: Disable access log when using live-reload
- Deploying docker image with Nginx HOT 2
- Upgrade to Python 3.8.8 to fix CVE-2021-3177 HOT 2
- Update PyYAML to >= 5.4 for CVE-2020-14343 HOT 3
- Log message are missing HOT 2
- Python 3.9 HOT 5
- Updated Uvicorn to 0.14.0 to increase ws max_size to > 1mb, but doesn't work, & get "error walking file system: FileNotFoundError [Errno 2] No such file or directory: '/app/.venv/bin/python'" HOT 2
- How to enable all debug which is available?
- Wrong ML prediction inside the docker HOT 1
- Ignore HOT 1
- how gunicorn + uvicorn + uvloop + httptools HOT 1
- RuntimeError: Task attached to a different loop HOT 2
- Images are out of date HOT 4
- New uvicorn[standard] version cause memory leak due to tcp ping HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from uvicorn-gunicorn-docker.