All Projects → chop-dbhi → Django Webhooks

chop-dbhi / Django Webhooks

Licence: other
Simple webhooks implementation for Django

Programming Languages

python
139335 projects - #7 most used programming language

django-webhooks

Build Status Coverage Status

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

  1. Events are triggered using webhooks.trigger(event, [*args, [**kwargs]])
  2. If a handler is registered for the event, the arguments are passed into the handler to generate a JSON-serializable payload.
  3. 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')
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].