A simple Django app to comunicate with postoffice
Project description
Post office django client
What is postoffice django
postoffice_django
is a django app to communicate with postoffice.
Features
- Set up server via django commands:
- Create necessary
topics
inpostoffice
withconfigure_postoffice_publishers
to be able to publish a message - Create necessary
publishers
inpostoffice
withconfigure_postoffice_topics
to be able to consume messages
- Create necessary
- Easily send messages to
postoffice server
How to install it
Prerequisites
To be able to run the application, you must have
- django
- requests
Obviously, you need a django project up and running
Installing postoffice_django
At the moment there are two ways to install the app:
$ pip install postoffice-django
or add
postoffice-django
to your requirements file
Add it to your Django installed apps:
INSTALLED_APPS = [
...
'postoffice_django'
]
Then, you need to set the required settings for your app:
POSTOFFICE = {
'URL': 'http://fake.service',
'CONSUMERS': [{
'topic': 'some_topic',
'target': 'http://www.some_url.com',
'type': 'http',
'from_now': True
},
{
'topic': 'another_topic',
'target': 'http://www.another_url.com',
'type': 'pubsub',
'from_now': False
}],
'TIMEOUT': 0.3,
'BULK_TIMEOUT': 5,
'ORIGIN_HOST': 'example.com',
'TOPICS': ['topic_to_create', 'another_topic_to_create']
}
-
URL
: Is theurl
where the Postoffice server is hosted. -
CONSUMERS
: Are the consumers which must been configured as publishers in Postoffice server. With that, we create the necessary topics and publishers on Postoffice.-
topic
: Topic name to the consumer -
target
: Url or pub/sub topic name -
type
: http/pubsub -
timeout
: Seconds Postoffice should wait before cancelling the request. [Optional]
-
-
TIMEOUT
: Specific timeout to use in every communication with Postoffice. If not specified, the default value is 0.5 seconds. -
BULK_TIMEOUT
: Specific timeout to use when sending bulk messages to Postoffice. If not specified, the default value is 5 seconds. -
ORIGIN_HOST
: The host from where the topic is created (your host). It is necessary in order topostoffice
know where the topic come from. -
TOPICS
: Topics to be created in order to send messages topostoffice
How to setup Postoffice via django commands
Now we are ready to start sending messages to postoffice
. But first, we must generate topics
and/or publishers
in postoffice depending on the purpose of the project with postoffice.
If we need to create the topics to be able to publish, we should execute:
$ ./manage.py configure_postoffice_topics
and, if we need to create the publishers, we should execute:
$ ./manage.py configure_postoffice_publishers
Sending messages to postoffice
We have two publishers in the publishing
module
Publishing a single message
from postoffice_django.publishing import publish
publish(topic: str, message: dict, **attributes: dict) -> None
-
topic
: Topic name. This topic must exist on postoffice to manage the message. -
payload
: Message to be sent. This must be a dict. -
attributes
: Additional attr. All attributes are cast to string when publishing a message.
Publishing messages in batches
In case we want to send multiple messages to the same topic, the best way is sending them in batches.
from postoffice_django.publishing import bulk_publish
def bulk_publish(topic: str, payload: list, **attrs: dict) -> None:
-
topic
: Topic name. This topic must exist on postoffice to manage the message. -
payload
: Message's payloads to be sent. This must be a list. -
attributes
: Additional attr. All attributes are cast to string when publishing a message.
An example:
bulk_publish('test-topic', [{'message1': 'key1'}, {'message2': 'key2'}], {'additional_key': 1})
This will be handled on Postoffices and we'll actually receive two messages for the same topic
test_topic
,{'message1': 'key1'}
,{'additional_key', 1}}
test_topic
,{'message2': 'key2'}
,{'additional_key', 1}}
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
Built Distribution
Hashes for postoffice_django-0.7.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 232ab2c81b48cec92017d34c5afd6f9f01e4b212def5816548ed59b752c8da62 |
|
MD5 | 0343aafc5f5587fff818c80db402dad2 |
|
BLAKE2b-256 | ba0a7f942f2c06889c28010bcd9a571b254f70c0b7d85a80360944cfdbf9de0e |