Ben Darnell on Tornado


January 16th, 2016

1 hr 6 mins 27 secs

Your Hosts

About this Episode

Visit our site to listen to past episodes, support the show, join our Discourse community, and sign up for our mailing list.


If you are trying to build a web application in Python that can scale to a high number of concurrent users, or you want to leverage the power of websockets, then Tornado just may be the library you need. In this episode we interview Ben Darnell about his work as the maintainer of the Tornado project and how it can be used in a number of ways to power your next high traffic site.

Brief Introduction

  • Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.
  • Subscribe on iTunes, Stitcher, TuneIn or RSS
  • Follow us on Twitter or Google+
  • Give us feedback! Leave a review on iTunes, Tweet to us, send us an email or leave us a message on Google+
  • We are also running a listener survey to get feedback about the show. You can find it at
  • I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at
  • Linode is sponsoring us this week. Check them out at and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project
  • I would also like to thank Hired, a job marketplace for developers and designers, for sponsoring this episode of Podcast.__init__. Use the link to double your signing bonus to $4,000.
  • Your hosts as usual are Tobias Macey and Chris Patti
  • We recently launched a new Discourse forum for the show which you can find at Join us to discuss the show, the episodes, and ideas for future interviews.
  • Today we are interviewing Ben Darnell about his work on Tornado

Interview with Ben Darnell

  • Introductions
  • How did you get introduced to Python? – Chris
  • What is Tornado and what sets it apart from other HTTP servers? – Chris
  • How did you get involved with Tornado? – Ben
  • What was the inspiration for the name? – Tobias
  • Tornado was created before the recent focus on asynchronous applications. What prompted that design choice and when might someone care about using async in their development? – Tobias
  • What is involved in creating an event loop and what are some of the specific design decisions that you made when implementing one for Tornado? – Tobias
  • How does Tornado’s event loop compare to other packages such as Twisted or the asyncio module in the standard library? – Tobias
  • The web module appears to provide a minimal framework for developing web apps. How scalable are those capabilities and is there a recommended architecture for people using Tornado to develop web applications? – Tobias
  • What are some use cases in which a developer might choose Tornado over other similar options? – Chris
  • Could you please give our listeners an overview of Tornado’s concurrency options including coroutines? – Chris
  • I see that Tornado supports interoperability with the WSGI protocol and one of the use cases mentioned is for running a Django application alongside a Tornado app. Is that a common way for providing websocket capabilities alongside an existing web app? – Tobias
  • I noticed that Tornado provides non-blocking versions of bare sockets and TCP connections. Are there any add-on packages available to simplify the use of various network protocols along the lines of what Twisted includes? – Tobias
  • Please tell us about the transition of Tornado to Python 3. What obstacles did you face and how did you overcome them? – Chris
  • Based on your issue tracker it looks like http2 support is definitely on the roadmap. Could you please detail your future plans in this area? – Chris
  • What are some of the common “gotcha’s” for people who are just starting to use Tornado? – Tobias


Keep In Touch


The intro and outro music is from Requiem for a Fish The Freak Fandango Orchestra / CC BY-SA