Live data from Hacker News

Multiple Django and Flask Sites with Nginx and uWSGI Emperor

tghw.com

21–29 of 29 posts

Re: Multiple Django and Flask Sites with Nginx and uWSGI Emperor

#21

Could someone please explain to me what uwsgi does? Looking at the main page, it does ... everything! It's a wsgi server, but it looks like the default configuration is still to put it behind another server like nginx or cherokee. Also, nginx for example, has its own mod_wsgi. After reading the docs, I still don't quite understand why I'd want that extra layer between my server and my code.

Take it as an "infrastructure"/"swiss army knife" for hosting and deployment. Most of its features are still topic of research in autoscaling,management, tuning and so on... Most of the users do not need that features, but others (like the Emperor) can be useful for everyone. Regarding the additional layer, is something required, as your code/framework need a way to communicate with the webserver and being healthy. Nginx's mod_wsgi is an old non official module, very funny, but it works in a very different way embedding python itself in the nginx core.

Re: Multiple Django and Flask Sites with Nginx and uWSGI Emperor

#23
What a coincidence... I just blogged about our switch to uWSGI. For anybody interested check out our setup here: http://amix.dk/blog/post/19689

As you can read in the above blog post there are some issues, especially when handling very big GET requests (you need to set a bigger internal buffer) and when handling uploads (you need to extend the default send and receive timeouts). Other than this, uWSGI rocks and I highly recommend it.

Re: Multiple Django and Flask Sites with Nginx and uWSGI Emperor

#24
post #18

Earlier quoted context omitted.

Don't worry much about node, Twisted still beats it for async workloads and PyPI is still much bigger than npm.

I'm a big fan of twisted too. Can you show me the benchmark for Twisted vs. Node for async workloads?

I went looking, and found an experiment someone did a couple years ago, where he wrote a trivial "echo data over a socket" server and found that pretty much everything held up okay.

http://oddments.org/scalestack-vs-node-vs-twisted-vs-eventle...

Obviously this doesn't tell us much; a better comparison would be nice.

Re: Multiple Django and Flask Sites with Nginx and uWSGI Emperor

#25
post #22

I'm somewhat confused. If both the django and flask app are running and you visit "mygreatstartup.com", which app will you see?

Since requests to mygreatstartup.com go to nginx (and get routed from there to any back-end servers you may have), that depends entirely on how you've got nginx configured.

Re: Multiple Django and Flask Sites with Nginx and uWSGI Emperor

#26
post #8
post #6

Are there any updated benchmarks/feature comparisons between nginx/uWSGI vs. nginx/gunicorn out there?

The web server doesn't matter. Your app is what will be slow.

So you can serve a production site using Python's wsgiref and SimpleHTTPServer?

Servers do matter - memory usage, throughput, error rate, concurrent request handling etc. If the options are to use a faster server, or hunt down your code for bottlenecks, the choice is clear. Even if I modify my code to be faster, a faster server doesn't hurt.

This "benchmarks are useless" meme is overdone. "Hello World" benchmarks don't matter, but if a server is significantly faster on my real world application, why would that benchmark be meaningless for me?

Re: Multiple Django and Flask Sites with Nginx and uWSGI Emperor

#27
post #21

Could someone please explain to me what uwsgi does? Looking at the main page, it does ... everything! It's a wsgi server, but it looks like the default configuration is still to put it behind another server like nginx or cherokee. Also, nginx for example, has its own mod_wsgi. After reading the docs, I still don't quite understand why I'd want that extra layer between my server and my code.

Take it as an "infrastructure"/"swiss army knife" for hosting and deployment. Most of its features are still topic of research in autoscaling,management, tuning and so on... Most of the users do not need that features, but others (like the Emperor) can be useful for everyone. Regarding the additional layer, is something required, as your code/framework need a way to communicate with the webserver and being healthy. N…

I see, thanks!

Re: Multiple Django and Flask Sites with Nginx and uWSGI Emperor

#28
post #18

Earlier quoted context omitted.

Don't worry much about node, Twisted still beats it for async workloads and PyPI is still much bigger than npm.

I'm a big fan of twisted too. Can you show me the benchmark for Twisted vs. Node for async workloads?

They'll both be bottlenecked on the system polling mechanism, barring any obvious deficiencies.

They're both very fast and microbenchmarks won't show anything very relevant.

Post reply on HN