Skip to main content

django-eventhandler

This is an event handler that handles messages from an AMQP server, installable as a Django application. Events are JSON-encoded dicts that have a key called ‘type’. The eventhandler calls functions that have bound themselves to an event using a decorator.

Installation and configuration

Install the application in your Django project. Add ‘eventhandler’ to your INSTALLED_APPS setting. Then, add the following two settings to your project settings file.

LISTENER_URL = 'amqps://<user>:<pass>@<hostname>/<vhost>'
LISTENER_QUEUE = 'my-application'

Optionally, you can also specify these three settings, to have an exchange declared.

LISTENER_EXCHANGE = 'events'
LISTENER_EXCHANGE_TYPE = 'topic'
LISTENER_ROUTING_KEY = '#'

Running the event handler

Manually: python manage.py event_listener. To daemonize it, you can use something like supervisor to manage the process.

Usage

Events that are received from AMQP should be JSON-encoded dicts. Each message should have a key named type, with str value. This value can be used in a decorator, to have the event handler execute a function when receiving an event.

Example:

from eventhandler import handles_event

@handles_event('my_event')
def do_something_clever(event):
    pass

Now each event with a ‘type’: ‘my_event’ combo will be passed into this function. Of course it’s possible to have more than one handler for an event, or have one handler handle multiple events.

from eventhandler import handles_event

@handles_event('my_other_event')
@handles_event('my_event')
def do_something_clever(event):
    pass

@handles_event('my_other_event')
def do_something_else(event):
    pass
NB Make sure that your handlers are in a place that’s loaded/scanned on startup of Django,

otherwise the decorators won’t register the handlers. For instance, for a Django-application, my_app/__init__.py is scanned on startup (provided my_app is in INSTALLED_APPS). So if your handlers are in my_app/events.py, you could load them from there:

# my_app/__init__.py:

# Load handlers for events, so django-eventhandlers picks 'em up
import my_app.events  # NOQA (keep pyflakes happy)

Running tests

Just run python manage.py test to run tests against your current setup. Run tox to run tests for various versions of Django. Currently, Django 1.6 through 1.9 on Python 2.7 are tested.

About

This software is brought to you by Byte, a webhosting provider based in Amsterdam, The Netherlands. We specialize in fast and secure Magento hosting and scalable cluster hosting.

Check out our Github page for more open source software or our site to learn about our products and technologies. Look interesting? Reach out about joining the team. Or just drop by for a cup of excellent coffee if you’re in town!

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-eventhandler-0.3.3.tar.gz (4.7 kB view details)

Uploaded Source

File details

Details for the file django-eventhandler-0.3.3.tar.gz.

File metadata

File hashes

Hashes for django-eventhandler-0.3.3.tar.gz
Algorithm Hash digest
SHA256 b1f248584520bfa8c9d55a21061c7b8cc5444d2f387cd36c098e33c37030f121
MD5 ab1927f552e25b6ecd70db1d9bd5df7f
BLAKE2b-256 b7f55260b0a566892ca239b6b86df474e4eac9c7ba60c60b5091be023a60879d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page