Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mkirchner/rivulet
A Redis-Based Message Broker for Python
https://github.com/mkirchner/rivulet
Last synced: 1 day ago
JSON representation
A Redis-Based Message Broker for Python
- Host: GitHub
- URL: https://github.com/mkirchner/rivulet
- Owner: mkirchner
- License: mit
- Created: 2018-12-27T01:26:36.000Z (almost 6 years ago)
- Default Branch: dev
- Last Pushed: 2023-03-31T14:39:16.000Z (over 1 year ago)
- Last Synced: 2024-08-10T21:21:47.794Z (3 months ago)
- Language: Python
- Homepage: https://rivulet.readthedocs.io/en/latest/
- Size: 38.1 KB
- Stars: 1
- Watchers: 4
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
rivulet: A Redis-Based Message Broker for Python
================================================.. image:: https://travis-ci.org/mkirchner/rivulet.png
:target: https://travis-ci.org/mkirchner/rivulet
:alt: Latest Travis CI build status.. image:: https://readthedocs.org/projects/rivulet/badge/?version=latest
:target: https://rivulet.readthedocs.io/en/latest/?badge=latest
:alt: Documentation StatusDocumentation: `Read the docs `_.
Quickstart
----------$ pip install rivulet
Notes
-----Limitations
^^^^^^^^^^^* No balanced consumers (yet)
* Without the proper management tools (see todos), managing messages is
painful raw redis.Todos
^^^^^* Extend testing
* Connection drops
* Parallel producers, consumers (stressing the locking setup)* Provies management functionality
* list channels, delete channels
* count, list, update subscribers
* count, list, prune messagesImplementation details
^^^^^^^^^^^^^^^^^^^^^^Data model:
1. :code:`rvl:lock:`: Used to maintain locks across
multi-step redis calls (in particular when sending a message using
a server-issued, monotonically increasing message seq id).
2. :code:`rvl:id:`: A counter providing sequence ids for
messages in channel `channel_id`
3. :code:`rvl:msg:`: ZSET that maps a packed JSON string
to the message sed id (allowing range queries on messages over seq
ids).
4. :code:`rvl:channel:`: ZSET that maps a client id to the last
message id in channel `channel_id` seen by the clinet
5. :code:`rvl:index:`: ZSET that maps the channel_id to the last
message id seen by client `client_id`