Sorry Derek, but this comparation is very old. Now the uwsgi module is included in nginx by default (as Cherokee) and a lot of documentation has been rewritten, with a section dedicated to examples contributed by users.
During the last 6 months the project has evolved a lot. Yes it is not simple to configure as a SIMPLE wsgi-only server, but there is a lot of works going on on this area, performance are increasing after every release (yes there are still space for optimizations) and memory usage is lower than every competitor. Documentation is surely not of high quality (contributions are wellcomed), but in the mailing-list we are always ready to help people.
UWSGI is a pain to configure, and there are some interesting failures when using UNIX sockets at high concurrency levels (try it with ab -n 10000 -c 255 against nginx/django/uwsgi to see what I mean) caused by some unix socket retry issues, however, overall it's performance is very good. TCP is almost exactly as fast, so is worth using instead.
If you REALLY want to tune Django though, take a look at some lower hanging fruit; the templates are HORRIFIC. Jinja2 is not exactly a drop in replacement, but it is close, and it is much faster. I have a test with a simple UL>LI list with 300 li elements, which renders at 150 pages per second in django templates, and over 1000 pages/sec on Jinja2, same middleware and input data.
And I agree with the multiple posters saying that uWSGI is a pain to set up. It is also a pain to run correctly, as it's documentation , especially about command line options , is painful. Super powerful, but infoglut trying to figure out what to do and why.
Yeah, you got "hackernewsed" today, so I didn't notice the old dates.
The uwsgi module in Nginx wasn't what I was discussing though, I still think that actually deploying a uWSGI container, although easy for simple cases, is still a bit complicated to do for heavy traffic sites, or on UNIX sockets.
Comment
Sorry Derek, but this comparation is very old. Now the uwsgi module is included in nginx by default (as Cherokee) and a lot of documentation has been rewritten, with a section dedicated to examples contributed by users.
http://projects.unbit.it/uwsgi/wiki/Example
During the last 6 months the project has evolved a lot. Yes it is not simple to configure as a SIMPLE wsgi-only server, but there is a lot of works going on on this area, performance are increasing after every release (yes there are still space for optimizations) and memory usage is lower
than every competitor. Documentation is surely not of high quality (contributions are wellcomed), but in the mailing-list we are always ready to help people.
Parent comment
UWSGI is a pain to configure, and there are some interesting failures when using UNIX sockets at high concurrency levels (try it with ab -n 10000 -c 255 against nginx/django/uwsgi to see what I mean) caused by some unix socket retry issues, however, overall it's performance is very good. TCP is almost exactly as fast, so is worth using instead. If you REALLY want to tune Django though, take a look at some lower hanging fruit; the templates are HORRIFIC. Jinja2 is not exactly a drop in replacement, but it is close, and it is much faster. I have a test with a simple UL>LI list with 300 li elements, which renders at 150 pages per second in django templates, and over 1000 pages/sec on Jinja2, same middleware and input data. And I agree with the multiple posters saying that uWSGI is a pain to set up. It is also a pain to run correctly, as it's documentation , especially about command line options , is painful. Super powerful, but infoglut trying to figure out what to do and why.
Replies
Yeah, you got "hackernewsed" today, so I didn't notice the old dates.
The uwsgi module in Nginx wasn't what I was discussing though, I still think that actually deploying a uWSGI container, although easy for simple cases, is still a bit complicated to do for heavy traffic sites, or on UNIX sockets.