Skip to content
⚙️ Event Driven Programming framework for Python.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Effekt (/effe:kt/) is a Python Framework to make Event Driven Programming easier.


With Effekt you can enjoy the power of callbacks without any kind of struggle.

from effekt import Router

router = Router()

def saySomething():
    print("Hello World!")"/greet")

Note: although URL patterns and names such as "router" come up really often, it has nothing related to the HTTP protocol, it's just a convention.

Pretty unsatisfied? Watch this:

from effekt import Router

router = Router()

@router.on("/welcome/main", pr=1)
def welcome_message():
    print("Welcome user!")

@router.on("/welcome/main", pr=2)
def ask_name():
    print("What's your name? ")
    name = input()"/welcome/name", name=name)

def beautiful_name(name):
    print("Oh {}! You've got such a beautiful name!".format(name))"/welcome/main")

Ok, I see, isn't this just calling functions under the hood?

Yes it is. But Effekt offers the possibity to create Extensions, such as the official Clock one.

from effekt import Router
from effekt.ext.clock import Clock
from dmotd import DMOTD

router = Router()
clock = Clock(router)
dmotd = DMOTD("")

def fetch_motd():
    motd = dmotd.raw()"/save", motd=motd)

def save_to_file(motd):
    with open("motd.txt", "w") as f:

def save_to_remote_server(motd):
    # SSH stuff...

clock.tick("/fetch", relax=3600)

This script fetches the DMOTD every hour and saves it locally and onto another remote server. You can broadcast a message only by assigning different functions to the same event listener.


To install it, just clone the repo and add it to the local packages with

git clone # Clone the repository
cd effekt/src # Change working directory
python install # Install the package

If you want to install it in a virtual environment, just run before installing

source <envdir>/bin/activate


If you want some (moral) support or just help, you can rely on the gitter chat.


If you want to contribute to this open source project, you're free to pull-request us! We'll check your submission as soon as we can.

You can’t perform that action at this time.