9 ms·
Multiple Django and Flask Sites with Nginx and uWSGI Emperor
- deleted 14y ago[deleted]
- tghw 14y agoYeah, I was using Supervisord before this, but was having some problems with it leaving zombie uwsgi processes around (for sites that needed multiple workers). While looking for an alternative, I came across Emperor. So far it's been great.
- whalesalad 14y agoThis 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 14y agoDon't worry much about node, Twisted still beats it for async workloads and PyPI is still much bigger than npm.
- lee 14y agoI'm a big fan of twisted too. Can you show me the benchmark for Twisted vs. Node for async workloads?
- pjscott 14y agoI 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-eventlet http://oddments.org/scalestack-vs-node-vs-twisted-vs-eventle... Obviously this doesn't tell us much; a better comparison would be nice.
- lucian1900 14y agoThey'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.
- salimmadjd 14y agoGreat 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.
- Aloisius 14y agoAre there any updated benchmarks/feature comparisons between nginx/uWSGI vs. nginx/gunicorn out there?
- forsaken 14y agoThe web server doesn't matter. Your app is what will be slow.
- ceol 14y agoPersonally, I would like to know if this setup is available using gunicorn.
- chrisguitarguy 14y agoIt 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 http://gunicorn.org/deploy.html
- irahul 14y agoSo 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?
- mattwdelong 14y agoI'm actually setting up a new ec2 instance tonight as my current one is set to expire. I currently run DUNG (nginx/gunicorn), perhaps I will run nginx/uWSGI first and compare performance. I will ping you if I get around to it.
- kevin1024 14y ago
- colbyolson 14y agoI 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 14y agoYea, it is a scraped design. https://github.com/orf/simple 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.
- deleted 14y ago[deleted]
- makmanalp 14y agoCould 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 14y agoTake 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 14y agoI see, thanks!
- moatra 14y agoI'm somewhat confused. If both the django and flask app are running and you visit "mygreatstartup.com", which app will you see?
- pjscott 14y agoSince 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.
- amix 14y agoWhat a coincidence... I just blogged about our switch to uWSGI. For anybody interested check out our setup here: http://amix.dk/blog/post/19689 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.
- leoshk 14y agoThe 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.