Comments (5)
This will require quite an effort, as the main process – which right now is quite simple – should behave like a real arbiter and effectively manage child process continuously.
Probably I can take a look at what gunicorn does, but this for sure will require some time.
from granian.
Similar/related thing is having a request timeout after which to kill a process if it did not respond
https://docs.gunicorn.org/en/stable/settings.html#timeout
from granian.
I'm not sure Granian should handle all of this complexities.
If the aim would be having 1:1 feature comparison with Gunicorn, probably it would make more sense to implement Granian workers for Gunicorn..
from granian.
I'm not sure Granian should handle all of this complexities. If the aim would be having 1:1 feature comparison with Gunicorn, probably it would make more sense to implement Granian workers for Gunicorn..
timeouts, and backpressure (max req) sound like features for Emmett, not for Granian.
from granian.
probably it would make more sense to implement Granian workers for Gunicorn..
This also makes sense, but i'm not aware of the tradeoffs.
I created the ticket thinking of the feature that has made me choose gunicorn over others like Daphne even. In any reasonably complex web app(like enterprise!) memory leaks seem to be a big issue and hence this seemed like an must-have. This is obviously not true for every project, and perhaps Granian works perfectly fine for other use cases.
It might be possible to keep the design open in a way that these can be implemented by the community perhaps in the future if needed.
Further stream of thought
As @snuderl pointed out, request timeout is a thing also because as the team grows devs tend to add all kinds of things like network requests without timeout. At that point stray endpoints making these requests will just hang! and hence you're forced to want a timeout or hunt down each network request and hack/patch your way sometimes to add a timeout.
At work(team of ~100 devs) these are the flags that keep the app running smoothly without too many problems.
--timeout=28 --workers=X --max-requests=250 --max-requests-jitter=10
The timeout of 28 seconds is just to keep it lower than 30(which was the Heroku hard limit), so we can receive Python traceback errors. The initial idea was to progressively lower it and force all endpoints to "improve" performance over time till reaching a sane value.
from granian.
Related Issues (20)
- WSGI response iterator lagging with Flask when mimetype="text/event-stream" HOT 4
- WSGI headers with accented characters are not passed to the app HOT 5
- App factory HOT 1
- Stop responding after load testing HOT 5
- Log configurations access date formatter is ignored HOT 3
- Access log logs wrong status on file responses HOT 5
- Thread panic in FastAPI streaming response HOT 6
- Add CLI option to provide a factory function name
- Add Granian extended reloading options HOT 1
- granian.Granian method is failing HOT 2
- Add documentation for "programmatic" usage HOT 8
- Avoid to run Python event-loop in WSGI protocol
- Add support for SSL private key encryption
- Explore the possibility to have sync RSGI interfaces
- Logs not displayed for webscoket connections HOT 2
- Granian not working with fastapi FileResponse HOT 2
- Python Rotating File Handler Logging Error HOT 1
- Can't load wsgi file without .py ext HOT 3
- Is it possible to have gevent support? HOT 2
- Systemd notify protocol 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 granian.