Skip to main content

Simple webhooks for Django

Project description

# django-webhooks

[![Build Status](https://travis-ci.org/cbmi/django-webhooks.png?branch=master)](https://travis-ci.org/cbmi/django-webhooks)
[![Coverage Status](https://coveralls.io/repos/cbmi/django-webhooks/badge.png?branch=master)](https://coveralls.io/r/cbmi/django-webhooks?branch=master)



## Install

```bash
# Yes.. with a two on the end
pip install django-webhooks2
```

## Setup

Add `webhooks` to `INSTALLED_APPS`:

```python
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

```python
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')
```

Project details


Download files

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

Source Distribution

django-webhooks2-0.1.0.tar.gz (6.1 kB view details)

Uploaded Source

File details

Details for the file django-webhooks2-0.1.0.tar.gz.

File metadata

File hashes

Hashes for django-webhooks2-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6b10aa74740ebab7af8d20dc57757f15ce5bb9923dcc4a3696f38981371fe1dd
MD5 c2e0288059137d15a03840838d3900d7
BLAKE2b-256 79b7b85368ff416ad2509f38b6b5f9ecfca8b5a751bb6e4e450b679b8d77684a

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