

Multiple Django and Flask Sites with Nginx and uWSGI Emperor - tghw
http://tghw.com/blog/multiple-django-and-flask-sites-with-nginx-and-uwsgi-emperor

======
whalesalad
This is my favorite stack too. I usually use supervisord to handle uwsgi
processes but this looks much more debian/ubuntu-like. Thanks for the write
up. I like to think I am pretty experienced with Django/Python but it's ALWAYS
fun to learn new things. Especially when sometimes it feels like a lot of the
innovation and new stuff is occurring elsewhere (cough node)

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

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

~~~
pjscott
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...](http://oddments.org/scalestack-vs-node-vs-twisted-vs-eventlet)

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

------
amix
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.

------
colbyolson
I enjoy seeing these python related posts being submitted. As @whalesalad
said, it seems a lot of the innovation is in ruby/node land.

Although the first thing I noticed when I clicked the link was that it looks
like it's a scraped design of Svbtle.

edit: spelling.

~~~
leetrout
Yea, it is a scraped design. <https://github.com/orf/simple>

I was more surprised that the author claims this as a new feature. I feel like
I heard about this over a year ago... In any case, excellent write-up.

------
makmanalp
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.

~~~
unbit
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.

~~~
makmanalp
I see, thanks!

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

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

~~~
ceol
Personally, I would like to know if this setup is available using gunicorn.

~~~
chrisguitarguy
It would be very similar, you'd just need supervisord or something similar to
run gunicorn for you. There is a pretty complete example of deploying gunicorn
+ nginx in the docs: <http://gunicorn.org/deploy.html>

------
leoshk
The uWSGI ppa is not really maintained at all. The recommended way to install
it is via pip. It's just one binary and you're making the upstart conf
yourself anyways.

------
salimmadjd
Great write up and timely for us as we are looking at setting up our stack.
Please keep us posted with your progress and any ongoing operations issues.

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

~~~
pjscott
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.

