-
Notifications
You must be signed in to change notification settings - Fork 10
Description
Woven should support webserver [xyz].
Woven currently supports just a combination of nginx, apache, and modwsgi simply because this is probably the most flexible, mature combination that comes packaged with Ubuntu, and modwsgi is the "recommended way to get Django into production". Since your django project is always going make the fastest webserver run like a Ferrari in peak hour traffic, the question should be how do you ensure your Ferrari doesn't overheat and breakdown in peak hour, thus causing much embarrassment, and caching is going to be your answer before your choice of wsgi server. Every webserver/django benchmark I've seen strips out real life project necessities to show performance which makes the figures meaningless except for bragging rights.
That said there is no question that there are other projects like gnuicorn and uwsgi are growing in popularity and combine ease of configuration with good memory efficient performance and modern features so I'd like to support them if I can.
The strategy and requirement for supporting any web/wsgi server in Woven would be:
- Require it to be available as a package through apt-get (currently rules out uwsgi atm).
- Require standard startup scripts, graceful respawn/restart external to woven.
- Abstract the woven webserver related setupnode and deploy functions
- Implement woven webserver specific backends
- Minimal configuration. Woven setupnode should detect which webserver package/combination is configured in the list of packages to be installed - then use a corresponding backend.
I think the priority for 1.0 will be to get the api for backends in place, and then implement backends at will. Gunicorn in particular should be solid enough in Ubuntu 11.04 (if it isn't already). Not sure about uwsgi, it needs to be compiled to use with the dist specific version of Ubuntu (I think) which I don't want to do through woven, hence we need to see it packaged in a form that will just work with whatever version of nginx is installed.
We'll use this issue to track the implementation of a documented api for backends to support. Once that is complete we can add in specific backends as issues.