Simple webhooks for Django
Project description
# django-webhooks
[](https://travis-ci.org/cbmi/django-webhooks)
[](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')
```
[](https://travis-ci.org/cbmi/django-webhooks)
[](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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-webhooks2-0.1.0.tar.gz.
File metadata
- Download URL: django-webhooks2-0.1.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b10aa74740ebab7af8d20dc57757f15ce5bb9923dcc4a3696f38981371fe1dd
|
|
| MD5 |
c2e0288059137d15a03840838d3900d7
|
|
| BLAKE2b-256 |
79b7b85368ff416ad2509f38b6b5f9ecfca8b5a751bb6e4e450b679b8d77684a
|