Python makes it easy to develop great web applications. Amazon Web Services (AWS) makes it easy to deploy scalable, fault tolerant applications. In this tutorial we will focus on taking a provided Django web application and deploying it to AWS through a series of hands on exercises using Amazon's load balancing, auto scaling, content delivery and relational database services.
In this tutorial we will start with a demo Django application that we will use for the rest of the exercises. No previous experience with Django will be required.
Exercise 1: deploy the demo Django application to a single EC2 node using MySQL backed by an EBS (Elastic Bloc Storage) volume.
Exercise 2: move the database to RDS (Relational Database Service) and scale out reads using RDS read replicas.
Exercise 3: add a second node for the web application and place them into ELB (Elastic Load Balancer).
Exercise 4: move the static content into S3 and CloudFront.
Exercise 5: create an Auto Scaling group to automatically adjust the fleet of web servers based on load.
After these exercises the student will be left with a set of automated recipes for provisioning and deploying standard Django applications to AWS in a scalable, fault tolerant manner.
Students will be need to bring their own laptop and have a current AWS account including signing up for the following services: EC2, S3, CloudFront and RDS. Usage of AWS will be billed to the student by Amazon, but it should only be a few dollars for the 3 hour exercise. Students using Windows will need to have Putty installed for SSH access.
This talk explains modern techniques that any developer can use to support multiple versions of Python. You probably already have a massive test suite using a tool like nosetests, py.test, hand rolled unittest, etc. This talk will focus on using the tox command line tool to build and run your tests in all versions of Python, from 2.4 to Jython and, most importantly, Python 3.
tox lets you set up isolated virtual environments to test your module's deployment and compatibility with all major versions of Python. It's easy to install and is flexible enough that it probably already supports your existing test suite. With one simple command you can execute your test suite in each version of Python, you can build its documentation with Sphinx, and get a nice printout of the results. It has also been designed from the ground up to integrate into continuous integration (CI) tools like Jenkins.
Using practical examples, this talk will show you how to toxify your existing test suite and trick it out with the tox.ini config file. You'll also see how to leverage a Jenkins matrix build so that each code checkin will run tests in all versions of Python and report detailed failures.
Your app supports Python 3, right? No? Tox is the best way to develop in parallel with 2 and 3. We'll go over how to set up tox for that.
by Mike Pirnat
Believe it or not, but you can write pretty horrendously awful code even in a language as elegant as Python. Over the years, I've committed my share of sins; now it's time to come clean. Step right up for a tour of twisted, evil, and downright wrong code, and learn some strategies to avoid writing criminally bad code--if you dare!
by Gavin M. Roy
Tornado is an open source version of the scalable, non-blocking web server and tools that power FriendFeed. It is not only a web server but it is a light-weight, use only what you need, web development framework. In this talk we will review the current state of the Tornado project, review the features Tornado provides and give examples of how to implement asynchronous web applications in Tornado.
Topics covered will include:
Since launch Django Packages (http://djangopackages.com) has become the place to find and compare apps, frameworks and projects produced by the Django Community. Through the use of public APIs, Django Packages constantly fetches hard data from PyPI, Github, and Bitbucket, aproviding a powerful mash-up of real-world data on the volume of usage of a particular package. At a glance you can see which package is the most downloaded, which is the most used, and which has seen ongoing development.
The project is open sourced on Github, with all non-user data accessible available via the API. Django Packages was conceived and and launched in the 2010 Django Dash. Since launch it has seen features added incrementally and was a frequently mentioned project at the 2010 DjangoCon and was #1 on Hacker News on Sunday, December 5, 2010. It's purpose is to provide a place for Django Developers to submit, research, and review apps, projects, and frameworks.
Disqus, one of the largest Python applications on the web, will explain how they deal with scaling complexities in a growing startup. Founded in 2007, Disqus maintains a small engineering team reaching over 400 million users a month. Being powered by Python has allowed quick iteration of the application, without sacrificing code quality and performance. The talk will cover key parts of the architecture and development process at Disqus, including hardware, databases, and common bottlenecks.
9th–13th March 2011