Your SlideShare is downloading. ×
Unbit djangoday 20120419
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Unbit djangoday 20120419

1,427
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,427
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Production-grade Servers for Django DjangoDay 2012 Roberto De Ioris (Unbit)giovedì 26 aprile 12
  • 2. python manage.py runserver Why not ?giovedì 26 aprile 12
  • 3. Availability crash happens. always.giovedì 26 aprile 12
  • 4. Concurrency there is no “premature optimization” thing in sysadmins worldgiovedì 26 aprile 12
  • 5. Users They ignore you when things go well. They hate you when things go wrong. They want to kill you a bunch of minutes later...giovedì 26 aprile 12
  • 6. Servers are a cost ...and can became the higher cost very easilygiovedì 26 aprile 12
  • 7. The manager want to scale ...even if he does not know what it meansgiovedì 26 aprile 12
  • 8. Security be ready for the truthgiovedì 26 aprile 12
  • 9. WSGI one standard to rule them all... def application(env, start_response): start_response(‘200 OK’, [(‘Content-Type’,‘text/html’)]) return “Hello World”giovedì 26 aprile 12
  • 10. Proxy servers and static contents do not expose your app to the world. NEVER do not serve static files with Django. NEVERgiovedì 26 aprile 12
  • 11. app world webserver app appgiovedì 26 aprile 12
  • 12. Once upon a time... Flup and mod_pythongiovedì 26 aprile 12
  • 13. Flup FastCGI, SCGI, AJP pure python, preforking-multithreadgiovedì 26 aprile 12
  • 14. mod_python was a bad idea ?giovedì 26 aprile 12
  • 15. The new generation mod_wsgi gunicorn uWSGIgiovedì 26 aprile 12
  • 16. mod_wsgi apache module (in C) 2 modes: embedded and daemon preforking and multithread mature solid Windows supportgiovedì 26 aprile 12
  • 17. # mod_wsgi config WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py WSGIPythonPath /path/to/mysite.com WSGIDaemonProcess pippo processes=2 threads=15 <Directory /path/to/mysite.com/mysite> <Files wsgi.py> Order deny,allow Allow from all </Files> </Directory>giovedì 26 aprile 12
  • 18. gunicorn pure python do one thing do it well preforking (+async extensions) speaks http easy (maybe the easiest tool ever written)giovedì 26 aprile 12
  • 19. PYTHONPATH=/var/www gunicorn --workers 2 --bind 127.0.0.1:8000 pippo.wsgi:application # or add gunicorn to INSTALLED_APPS # it will bind to port 8000 python manage.py run_gunicorngiovedì 26 aprile 12
  • 20. uWSGI pure C preforking + multithread + async + plugins + blah blah feature rich (a blast beat of options) speaks uwsgi,FastCGI,Mongrel2-zeromq,HTTP and maybe Klingon fat-beardy-braces_equipped sysadmin friendly high learning curve made only for making money Mr Wolf would wear a uWSGI t-shirtgiovedì 26 aprile 12
  • 21. uwsgi --http-socket 127.0.0.1:8000 --wsgi-file /var/ww/pippo/wsgi.py --processes 2 --threads 15 # or [uwsgi] http-socket = 128.0.0.1:8000 wsgi-file = /var/ww/pippo/wsgi.py processes = 2 threads = 15 # or <uwsgi> <http-socket> 128.0.0.1:8000</http-socket> <wsgi-file> /var/ww/pippo/wsgi.py</wsgi-file> <processes>2</processes> <threads>15</threads> </uwsgi> #or .....giovedì 26 aprile 12
  • 22. before you ask... speed is not a problemgiovedì 26 aprile 12
  • 23. Which One? no easy answers...but...giovedì 26 aprile 12
  • 24. DO NOT LOOK AT BENCHMARKS ...otherwise you will directly go with uWSGI...giovedì 26 aprile 12
  • 25. Newbie ? gunicorn is the easiest choicegiovedì 26 aprile 12
  • 26. need full apache integration ? mod_wsgi FTWgiovedì 26 aprile 12
  • 27. want a full stack ? uWSGI has no competitorsgiovedì 26 aprile 12
  • 28. on the cloud ? gunicorn and uWSGI all over the placegiovedì 26 aprile 12
  • 29. still confused ? gunicorn uWSGI mod_wsgigiovedì 26 aprile 12
  • 30. other choices ? a lot... Tornado Passenger fapws3 ...giovedì 26 aprile 12
  • 31. Questions ?giovedì 26 aprile 12

×