A channel layer based on ZMQ
Project description
channels_zmq
A channel layer implementation using ZeroMQ PUB-SUB topology.
Installation
Install package from PyPI:
pip install channels-zmq
Usage
Configure the layer in your Django settings file. You can choose one of the two implementations described below:
Embedded layer
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_zmq.core.EmbeddedZmqChannelLayer",
"CONFIG": {
"pub_socket_address": "<SOME SOCKET ADDRESS>",
"capacity": 100,
"expiry": 60,
},
},
}
The embedded layer binds a ZeroMQ PUB socket inside the process that calls send
or group_send
.
Consumers will connect their SUB sockets to the same socket.
While this is a very lightweight implementation, it only allows a single process to call send
and group_send
with
the same layer.
If you need to send data created through other processes, you should create a different layer or use the dedicated layer.
+----------------+
|PRODUCER PROCESS|
|----------------|
| PUB SOCKET |
+----------------+
^ ^ ^
| | |
+-----------+ | +----------+
| | |
+------------+ +------------+ +------------+
| SUB SOCKET | | SUB SOCKET | | SUB SOCKET |
|------------| |------------| |------------|
| CONSUMER 1 | | CONSUMER 2 | | CONSUMER 3 |
+------------+ +------------+ +------------+
Dedicated layer
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_zmq.core.DedicatedZmqChannelLayer",
"CONFIG": {
"pull_socket_address": "<DAEMON PULL SOCKET ADDRESS>",
"pub_socket_address": "<DAEMON PUB SOCKET ADDRESS",
"capacity": 100,
"expiry": 60,
},
},
}
The dedicated layer connects a ZeroMQ PUSH socket to a the configured PULL socket location when you call send
or group_send
.
Consumers will connect to the configured PUB socket location instead.
While this implementation allows multiple processes to send messages over the same layer, it requires you to implement a daemon process that will read messages on the PULL socket and send them through the PUB socket.
+--------------------------+
| DAEMON PROCESS |
|--------------------------|
| PUB SOCKET | PULL SOCKET |
+--------------------------+
^ ^ ^ ^
| | | |
+---------------+ | | +----------------+
| | | |
+------------+ +------------+ +-------------+ +-------------+
| SUB SOCKET | | SUB SOCKET | | PUSH SOCKET | | PUSH SOCKET |
|------------| |------------| |-------------| |-------------|
| CONSUMER 1 | | CONSUMER 2 | | PRODUCER 1 | | PRODUCER 2 |
+------------+ +------------+ +-------------+ +-------------+
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
File details
Details for the file channels-zmq-0.1.0.tar.gz
.
File metadata
- Download URL: channels-zmq-0.1.0.tar.gz
- Upload date:
- Size: 24.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1c770470830dc59c4df369f5915d81079c1c733dd092469ccb7170be631416b |
|
MD5 | 36881531b745e9dc5c3bcf782380eba7 |
|
BLAKE2b-256 | 8cc81a5cecd6396caa0688a7c1ae0a2bc861cdfb59b33ac4cafa85141946f183 |
File details
Details for the file channels_zmq-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: channels_zmq-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 173e60ee52e1e9cb77a706d82a88563b03f5be7e8f6c4f14e2089f2d97fb330d |
|
MD5 | f39b03d3a74cdbac346e8160d8f9ad7d |
|
BLAKE2b-256 | a6b4141bc79c464899c0ac95273dbe04e962c60e0b1b3591efd57e6ddc232472 |