Telegraphy provides real time events for WSGI Python applications
JavaScript Python HTML Shell
Switch branches/tags
Nothing to show
Latest commit eb6d4a0 Jun 19, 2015 @D3f0 D3f0 Update README.rst
Failed to load latest commit information.
demo_project Add is_authorized_user user to BaseEventModel. Override in the demo_app Dec 6, 2013
git_hooks Too much to describe Oct 17, 2013
.gitignore Static package not included Dec 6, 2013
README.rst Update README.rst Jun 19, 2015
developer_requirements.txt Update the requirements and settings for testing Dec 4, 2013
requirements.txt Update requirements.txt Apr 28, 2014 Making PEP386 version of telegraphy Dec 16, 2013



Telegraphy (master) is based on WAMP 1.0. We're rewritting it to use a more advanced broker called for asynchronous operations.

Currentrly development is being made in crossbario branch.


Telegraphy provides real time events for WSGI Python applications with additional features such as event filtering, subscription persistence and authorization/authentication.

It's initially intended for Django but you can extend it to any WSGI framework.

WebSocket pub/sub and RPC is based on AutobahnPython implementation of WAMP protocol

Getting It

You can get Telegraphy by using pip:

$ pip install telegraphy

You will need to have pip installed on your system. On linux install the python-pip package, on windows follow this. Also, if you are on linux and not working with a virtualenv, remember to use sudo for both commands (sudo pip install telegraphy).

If you want to install it from source, grab the git repository from GitHub and run

$ git clone git://
$ cd telegraphy
$ python install

Installing the Django app

Telegraphy's Django app is installed with the standard procedure: in your projects file add telegraphy.contrib.django_telegraphy to the INSTALLED_APPS:


Using It

The django_telegraphy app allows you to easily extend your models so that they generate events on creation, update or delete. Those events will reach your front end in real time.

Simply install the django_telegraphy app in your Django project. Then run the following command in parallel to your web-server:

$ python run_telegraph

Extend your models so that they automatically generate events: create an file next to your

from models import MyModel
from import BaseEventModel

class MyEventsModel(BaseEventModel):
    model = MyModel

Finally, prepare some template to receive and show the events:

{% load telegraphy_tags %}
{% load static %}
        <title>Simple Telegraphy API Example</title>
        <script src='{% static "your_app/js/jquery-1.10.2.js" %}'></script>
        {% telegraphy_scripts %}
        <h1>Catching model events!</h1>
        <ul id="event_catcher"> </ul>
            (function (){
                var $event_catcher = $('#event_catcher');
                    function (tEvent){
                        console.log("Event", tEvent);
                        var new_line = $('<li/>').text("New instance");

And that's it! Every time you create, update or delete an instance of your model, an event will reach your template.

You can find more examples in the documentation.

More detailed documentation

You can read the docs online here. Or for offline access, you can clone the project code repository and read them from the docs folder.

Help and discussion

For help, suggestions and discussions please refer to

To guide the development efforts, or if you find any bugs, please use GitHub's issue tracker.


Machinalis also works on some other very interesting projects, like SimpleAI, Quepy and more.