{ "info": { "author": "Marc Kirchner", "author_email": "mail@marc-kirchner.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "rivulet: A Redis-Based Message Broker for Python\n================================================\n\n.. image:: https://travis-ci.org/mkirchner/rivulet.png\n :target: https://travis-ci.org/mkirchner/rivulet\n :alt: Latest Travis CI build status\n\n.. image:: https://readthedocs.org/projects/rivulet/badge/?version=latest\n :target: https://rivulet.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n\nDocumentation: `Read the docs `_.\n\n\nQuickstart\n----------\n\n $ pip install rivulet\n\n\nNotes\n-----\n\nLimitations\n^^^^^^^^^^^\n\n* No balanced consumers (yet)\n* Without the proper management tools (see todos), managing messages is\n painful raw redis.\n\nTodos\n^^^^^\n\n* Extend testing\n\n * Connection drops\n * Parallel producers, consumers (stressing the locking setup)\n\n* Provies management functionality\n\n * list channels, delete channels\n * count, list, update subscribers\n * count, list, prune messages\n\n\nImplementation details\n^^^^^^^^^^^^^^^^^^^^^^\n\nData model:\n\n1. ``rvl:lock:``: Used to maintain locks across\n multi-step redis calls (in particular when sending a message using\n a server-issued, monotonically increasing message seq id).\n2. ``rvl:id:``: A counter providing sequence ids for\n messages in channel `channel_id`\n3. ``rvl:msg:``: ZSET that maps a packed JSON string\n to the message sed id (allowing range queries on messages over seq\n ids).\n4. ``rvl:channel:``: ZSET that maps a client id to the last\n message id in channel `channel_id` seen by the clinet\n5. ``rvl:index:``: ZSET that maps the channel_id to the last\n message id seen by client `client_id`", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mkirchner/rivulet", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rivulet", "package_url": "https://pypi.org/project/rivulet/", "platform": "", "project_url": "https://pypi.org/project/rivulet/", "project_urls": { "Homepage": "https://github.com/mkirchner/rivulet" }, "release_url": "https://pypi.org/project/rivulet/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "Redis-Based Message Broker for Python", "version": "0.2.0" }, "last_serial": 4667075, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "9cb028d2c07788a33278d55987a2bedf", "sha256": "af38715c8c0e1afc61a8a5f12373c72917d620b33fe5fc80eeeca8585bb916e2" }, "downloads": -1, "filename": "rivulet-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9cb028d2c07788a33278d55987a2bedf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5602, "upload_time": "2019-01-07T01:21:43", "url": "https://files.pythonhosted.org/packages/4b/79/27ed894a2269ad5738bc4da6cf5158ae1f4b0e3a615695187c9de2de57b2/rivulet-0.1.1.tar.gz" } ], "0.1.1.dev1": [ { "comment_text": "", "digests": { "md5": "3417a6854fb33a4935a8970729208968", "sha256": "b370d4024bb2eebaf74fc16b1ff657c792136a2098616217ce7d0d150443a7de" }, "downloads": -1, "filename": "rivulet-0.1.1.dev1.tar.gz", "has_sig": false, "md5_digest": "3417a6854fb33a4935a8970729208968", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5255, "upload_time": "2019-01-06T07:52:17", "url": "https://files.pythonhosted.org/packages/39/9c/c315d90e8166fb7366b6867efc2aaf685671f36565adcc58ed000c8fc8aa/rivulet-0.1.1.dev1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "eb198cc4b5d55b84783e10d086eba8bf", "sha256": "2514977d1844b337263e080dbf14219118dc183e9c816fb01dafc970cf8caf31" }, "downloads": -1, "filename": "rivulet-0.2.0.tar.gz", "has_sig": false, "md5_digest": "eb198cc4b5d55b84783e10d086eba8bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5602, "upload_time": "2019-01-07T01:27:50", "url": "https://files.pythonhosted.org/packages/64/cd/fc2327d7c4a097d5adf19e20c78af130dab48fc857f7d5e00913a807c119/rivulet-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eb198cc4b5d55b84783e10d086eba8bf", "sha256": "2514977d1844b337263e080dbf14219118dc183e9c816fb01dafc970cf8caf31" }, "downloads": -1, "filename": "rivulet-0.2.0.tar.gz", "has_sig": false, "md5_digest": "eb198cc4b5d55b84783e10d086eba8bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5602, "upload_time": "2019-01-07T01:27:50", "url": "https://files.pythonhosted.org/packages/64/cd/fc2327d7c4a097d5adf19e20c78af130dab48fc857f7d5e00913a807c119/rivulet-0.2.0.tar.gz" } ] }