RabbitMQ event handler as a Django module
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
python manage.py event_listener. To daemonize it, you can use something like
supervisor to manage the
Events that are received from AMQP should be JSON-encoded dicts. Each message should have a key named
value. This value can be used in a decorator, to have the event handler execute a function when receiving an event.
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__.pyis scanned on startup (provided
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)
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.
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 the file for your platform. If you're not sure which to choose, learn more about installing packages.
|File Name & Checksum SHA256 Checksum Help||Version||File Type||Upload Date|
|django_eventhandler-0.4.2-py2-none-any.whl (5.3 kB) Copy SHA256 Checksum SHA256||py2||Wheel||Mar 31, 2017|
|django-eventhandler-0.4.2.tar.gz (5.0 kB) Copy SHA256 Checksum SHA256||–||Source||Mar 31, 2017|