No project description provided
Project description
Django NATS
Features
- Wrapper of NATS's nats-py
- Django management command to listen for incoming NATS messages
- Automatically serialize/deserialize message from/to JSON format
- Easy-to-call method for sending NATS messages
Installation
pip install django-nats-client
Setup
-
Add
nats_client
intoINSTALLED_APPS
# settings.py INSTALLED_APPS = [ ... 'nats_client', ]
-
Put NATS connection configuration in settings
# settings.py NATS_OPTIONS = { 'servers': ['nats://localhost:4222'], 'max_reconnect_attempts': 2, 'connect_timeout': 1, ... } NATS_LISTENING_SUBJECT = 'default'
Usage
Listen for messages
-
Create a new callback method and register
# common/nats.py import nats_client @nats_client.register def get_year_from_date(date: str): return date.year # custom name @nats_client.register('get_current_time') def current_time(): return datetime.datetime.now().strftime('%H:%M') # without decorator def current_time(): return datetime.datetime.now().strftime('%H:%M') nats_client.register('get_current_time', current_time)
-
Import previously file in
ready
method of yourapps.py
# common/apps.py class CommonConfig(AppConfig): ... def ready(self): import common.nats
-
Run listener management command
python manage.py nats_listener
Sending message
import nats_client
arg = 'some arg'
nats_client.send(
'subject_name',
'method_name',
arg,
keyword_arg=1,
another_keyword_arg=2,
)
Examples
import nats_client
year = nats_client.send('default', 'get_year_from_date', datetime.date(2022, 1, 1)) # 2022
current_time = nats_client.send('default', 'get_current_time') # 12:11
Settings
Key | Required | Default | Description |
---|---|---|---|
NATS_OPTIONS |
Yes | Configuration to be passed in nats.connect() |
|
NATS_LISTENING_SUBJECT |
No | 'default' | Subject for registering callback function |
Development
Requirements
- Docker
- Python
- Poetry
Linting
make lint
Testing
make test
Fix Formatting
make yapf
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
Close
Hashes for django_nats_client-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37c0c82a37e5c152ee223d69b6fe8e2874f2792b43faef95576a8134ecf02c87 |
|
MD5 | b16a9a00ab2d01f7fcc84d4f511cb0cd |
|
BLAKE2b-256 | 61f013ffa77e6b3d35f14c6c2e60bd2dd339ce7ed4fdd00d4d8621e8c673f0fe |