Libre, not Gratis

COEP FOSSMeet’19 is College of Engineering, Pune’s own Free and Open Source Software event. It is jointly organised by Computer and IT department, COEP, COEP’s Free Software Users Group (COFSUG) and COEP’s - Information and Cyber Security Research Group (COEP - ICSRG).

With a vision to promote the culture of openness, innovation, and freedom, the meet intends to bring together FOSS developers, academicians, researchers, students and all those who love the FOSS movement and provide an opportunity to all technophiles out there to participate in the FOSS development and adoption process through hands-on sessions, discussions and lectures.

We have closed the submissions for talks now.
Voting is open now.
Stay Tuned...

Contact Us:
Omkar Jadhav : 9405333642
Vikrant Ghatkar : 9834079157
Organising Team, COEP FOSSMeet’19

For any further queries, mail us at

For more information, visit our website at

Hosted by

Jaysinh shukla


Untwisting Twisted!

Submitted Feb 19, 2019

Twisted is a framework for writing event-driven applications in Python. Event-driven is a well-recommended programming paradigm for writing high performance networking applications, GUI applications or device drivers. The framework is more than a decade old and has a large community base. I am proposing an entry-level workshop to share my expertise with the community.

Duration: 180 minutes excluding breaks and question answers.


  • Introduction
    • What is an event-driven programming paradigm?
    • Eventloop
    • Installation
      • Windows
      • GNU/Linux
      • Macintosh
    • Important components of the framework
      • Reactor
      • Transports
      • Protocol
      • Protocol factories
      • Callbacks
      • Deferreds
      • Testing
    • Demonstration of writing tests for a real-world application
    • Guidelines on writing tests
    • Deployment guidelines
    • Seeking help from the community
      • Mailing list
      • IRC
      • Forum
      • Blog



I will explain the gist of event-driven programming paradigm. I will do a small comparison of this with the existing paradigm. Event-loops are the core of event-driven programming. I will explain how the loop communicates for scheduling tasks.


Twisted is largely platform independent, but also includes platform-specific functionalities. Installation of Twisted is as simple as installing any Python package.

Components of the Framework:


The reactor is an event-loop which drives the application.


Callbacks are a fundamental part of event-driven programming and are the way that the reactor indicates to an application that an event has arrived. There is two type of callbacks. One is when the event has succeeded and the other is when the event has failed. It is quite common to tangle the logic between success and failure callbacks. Twisted provides a great solution to write these callbacks by giving deferred interfaces.


Transport is a collection of various transport classes. It provides an API to transfer bytes to another end of the socket.


The protocol describes how to react to events. Protocol factory is responsible for producing an instance of the protocol. All the configuration information are preserved in a protocol factories.


Testing Twisted code is tricky. I will demonstrate mocking response objects and show how to avoid polluting an event loop. I will be focusing on utilities of “twisted.trial” module.

Deployment guidelines

Deploying a Twisted-based application is like deploying any other Python application. I will point out various ways to deploy and maintain a Twisted-based application.

Seeking help from the community

I will conclude this workshop by sharing resources to get involved with the community and continue to learn.


A laptop with Python 3 and a will to learn :)

Speaker bio

A full-stack developer by profession, a computer scientist by heart and an actor by a gene. One of the core organizer of PyKutch 2016.


{{ gettext('Login to leave a comment') }}

{{ gettext('Post a comment…') }}
{{ gettext('New comment') }}
{{ formTitle }}

{{ errorMsg }}

{{ gettext('No comments posted yet') }}

Hosted by