django-webhooks
Install
# Yes.. with a two on the end
pip install django-webhooks2
Setup
Add webhooks
to INSTALLED_APPS
:
INSTALLED_APPS = (
'webhooks',
...
)
Settings
-
WEBHOOK_TIMEOUT
- Seconds to wait until a request times out -
WEBHOOK_THREADS
- Maximum number of threads to be used in a worker pool -
WEBHOOK_USER_AGENT
- The user-agent string for POST requests. Defaults to the current site name if the Django sites apps is installed. -
WEBHOOK_VERSION
- The webhook version. If not None, this will be added to the user-agent string, e.g. 'Webhooks/1.0'. Default is 1.0.
Trigger Execution
- Events are triggered using
webhooks.trigger(event, [*args, [**kwargs]])
- If a handler is registered for the event, the arguments are passed into the handler to generate a JSON-serializable payload.
- All URLs registered for this event are collected and each URL receives a POST request with the JSON payload
Notes:
- If no URLs are registered for the event, the payload is not generated (since it would be wasted computation)
- All requests are sent in parallel using threads
- Logging is heavily use to catch any undesirable or unexpected behaviors (such as failing requests, errors or data serialization)
Usage
import webhooks
# Define and register a handler for an event
def handler():
return { ... }
webhooks.events.register('event', handler)
# Bind a URL to the event
webhooks.bind('event', 'http://example.com')
# Trigger the event. Any arguments after the event name
# will be passed into the handler to produce the data that
# will be POSTed to the bound URLs.
webhooks.trigger('event')