{ "info": { "author": "Milan Oberkirch | geOps", "author_email": "milan.oberkirch@geops.de", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: AsyncIO", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Scientific/Engineering :: GIS" ], "description": "An extensible Redis-over-WebSocket API on top of websockets and aioredis.\n\n\nInstallation\n------------\n\nFor basic functionality:\n\n pip install redis_websocket_api\n\nWith geo extension (filtering messages by extent, projection transformation):\n\n pip install redis_websocket_api[geo]\n\n\nServer-Side Usage\n-----------------\n\nStart the `WebsocketServer` like this:\n\n from aioredis import create_redis_pool\n from redis_websocket_api import WebsocketServer\n\n REDIS_ADDRESS = ('localhost', 6379)\n\n\n WebsocketServer(\n redis=loop.run_until_complete(create_redis_pool(REDIS_ADDRESS)),\n subscriber=loop.run_until_complete(create_redis_pool(REDIS_ADDRESS)),\n read_timeout=30,\n keep_alive_timeout=120,\n ).listen(\n host='localhost',\n port=8000,\n channel_names=('public_channel_1', 'public_channel_2'),\n )\n\nHave a look at `examples/demo.py` for an example with the `GeoCommandsMixin`\nadded.\n\n\nClient-Side Usage\n-----------------\n\n#### `WebsocketHandler`\n\nThe default functionality provides the following interface to the web client\n(expecting the requests over a websocket connection):\n- `GET key` translates to `hvals key`\n- `GET key hkey` translates to `hget key hkey`\n- `SUB key` subscribes the websocket to a redis channel (using a single redis\n connection pool for all clients)\n- `DEL key` unsubscribes the client from the channel\n- `PING` causes a `PONG` response (to avoid timeouts)\n\n#### Subclass of `WebsocketHandler` with `GeoCommandsMixin` added\n\nBy adding the `GeoCommandsMixin` the web client can use\n- `BBOX left bottom right top` to only receive GeoJSON features within this box\n plus all messages which are not valid GeoJSON\n- `PROJECTION epsg:number` causes all future GeoJSON features to be transformed\n to the given projection\n\nSee `examples/demo.py` for how to use an extended `WebsocketHandler` subclass.\n\nGeo commands are currently limited to `LineString`, `Polygon`, and `Point`\ngeometries.\n\n#### Build your own protocol\n\nUsing the commands listed above for communicating from client to server is\ncompletly optional and determinded by the Mixin classes added to the\n`WebsocketHandlerBase`.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/geops/redis-websocket-api", "keywords": "tralis websocket websockets aioredis redis", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "redis-websocket-api", "package_url": "https://pypi.org/project/redis-websocket-api/", "platform": "", "project_url": "https://pypi.org/project/redis-websocket-api/", "project_urls": { "Homepage": "https://github.com/geops/redis-websocket-api" }, "release_url": "https://pypi.org/project/redis-websocket-api/0.2.0/", "requires_dist": [ "websockets (==6.0)", "aioredis (==1.3.0)", "pyproj ; extra == 'geo'", "pytest ; extra == 'testing'" ], "requires_python": ">=3.5", "summary": "Redis-over-WebSocket API on top of websockets and aioredis", "version": "0.2.0" }, "last_serial": 5977659, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6a799f9c6ec5e896be47922b8e5d0e5a", "sha256": "49c4d12d48475b1a0e27db9282c622207f5c47e069a8a5a5690d38b785748534" }, "downloads": -1, "filename": "redis_websocket_api-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6a799f9c6ec5e896be47922b8e5d0e5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12983, "upload_time": "2018-10-05T11:43:58", "url": "https://files.pythonhosted.org/packages/65/62/3fc449c00e33caabccc7400bfdd8d6e130ae277d05ce58721c4f52358774/redis_websocket_api-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8f95f957512a7638064b64db455ecb3e", "sha256": "6066156544d2132a369abdcdf15b6a15f9be4f5d8c5466967a679a82bd32a8e8" }, "downloads": -1, "filename": "redis-websocket-api-0.0.1.tar.gz", "has_sig": false, "md5_digest": "8f95f957512a7638064b64db455ecb3e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8876, "upload_time": "2018-10-05T11:44:00", "url": "https://files.pythonhosted.org/packages/ea/32/99a1421ba7086d8bfcaeadf4cfbed1ecaec9dc33f23e1c97eeed9d4a0dff/redis-websocket-api-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "f104ef2fdb408e1c5e8e4d1c3405b69a", "sha256": "eddb072f5ce6923a645bcd4ffcc6db56e7e5c68a30e6b3bb4a3bfabb9caf5c84" }, "downloads": -1, "filename": "redis_websocket_api-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f104ef2fdb408e1c5e8e4d1c3405b69a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 12968, "upload_time": "2018-10-05T12:21:29", "url": "https://files.pythonhosted.org/packages/96/7d/20cef856e85693eb48e94e17a85b56bd999bfd403e9b14fda400a50cd2be/redis_websocket_api-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "97bfe4d89323eae24e3f8de8053ad4f6", "sha256": "9289f0d2c488965fe2a1765ae3d84038aea6eb935792269c0319a4457a9b6bea" }, "downloads": -1, "filename": "redis-websocket-api-0.0.2.tar.gz", "has_sig": false, "md5_digest": "97bfe4d89323eae24e3f8de8053ad4f6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8855, "upload_time": "2018-10-05T12:21:31", "url": "https://files.pythonhosted.org/packages/a3/59/473da6755c459502fa00c9f8dadf64b4e19c65a5f5120d4ba89213679727/redis-websocket-api-0.0.2.tar.gz" } ], "0.0.2.post1": [ { "comment_text": "", "digests": { "md5": "1cd4bcf1c241e2f6f0eba4828c6190c5", "sha256": "fcd0484bd4f5220dd7fdcaa0086f13441bb7062c0b2340f4a91a2193742a7dc8" }, "downloads": -1, "filename": "redis_websocket_api-0.0.2.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "1cd4bcf1c241e2f6f0eba4828c6190c5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9726, "upload_time": "2018-10-05T13:11:44", "url": "https://files.pythonhosted.org/packages/69/4b/6ce1fd4b6a0380cf8c57dfad255bfa3b1347aa4f7d662ee50ef24d491271/redis_websocket_api-0.0.2.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fff6e90330b00e9edb5df7c42d6e4736", "sha256": "f7aebabaac78fe04f2bce3e3980508b93ad5417cfac439de6e08325e04ecb5c4" }, "downloads": -1, "filename": "redis-websocket-api-0.0.2.post1.tar.gz", "has_sig": false, "md5_digest": "fff6e90330b00e9edb5df7c42d6e4736", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8717, "upload_time": "2018-10-05T13:11:45", "url": "https://files.pythonhosted.org/packages/59/06/8c92463539d499b7b4037ba2e6bbb7b5170f86bb8d40f9f16bfbfe72a502/redis-websocket-api-0.0.2.post1.tar.gz" } ], "0.0.2.post2": [ { "comment_text": "", "digests": { "md5": "67170fa95c1cffa5e87c8e76cd54db75", "sha256": "f6fa665cf880db91df0df0df6ea2a60e1c69255e7bd89e05ce01f134f75a6d2c" }, "downloads": -1, "filename": "redis_websocket_api-0.0.2.post2-py3-none-any.whl", "has_sig": false, "md5_digest": "67170fa95c1cffa5e87c8e76cd54db75", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9708, "upload_time": "2018-10-05T13:23:40", "url": "https://files.pythonhosted.org/packages/02/91/fd2b5d867ed4f4e78f483891803b806eac47cb1a76d85232a93978f9b196/redis_websocket_api-0.0.2.post2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f6af17055b3098f21e09e3dcf7ff4dc", "sha256": "ffba522e6f85f382bdb46514522d30bdc5436b2ec5a5c0dc458b10d9e0fd9104" }, "downloads": -1, "filename": "redis-websocket-api-0.0.2.post2.tar.gz", "has_sig": false, "md5_digest": "2f6af17055b3098f21e09e3dcf7ff4dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8676, "upload_time": "2018-10-05T13:23:42", "url": "https://files.pythonhosted.org/packages/2f/48/446ef1950f148fb4a96dadc2ac52cfd016a9e78574fedbae499c7434cac6/redis-websocket-api-0.0.2.post2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "5fdb2538ec54620d52dfb441924b327a", "sha256": "bb9535dd4c17cab1f5d0ab9bb0c08b0d0d95af02455ed2778ab7a7ff13b74ede" }, "downloads": -1, "filename": "redis_websocket_api-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5fdb2538ec54620d52dfb441924b327a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9714, "upload_time": "2019-09-26T13:47:00", "url": "https://files.pythonhosted.org/packages/e9/4f/12a10ccfaa78b0dd445f0d319da9cbf00045ffaf6ad304c9f48a6236f5ea/redis_websocket_api-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efc6a1971fd4cf851f2e4824e21dcfae", "sha256": "393e189f3cc0b42daff5ae691e0e85f26c1df9321f1493198e5f339c5016f3df" }, "downloads": -1, "filename": "redis-websocket-api-0.0.3.tar.gz", "has_sig": false, "md5_digest": "efc6a1971fd4cf851f2e4824e21dcfae", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 8881, "upload_time": "2019-09-26T13:47:02", "url": "https://files.pythonhosted.org/packages/be/6c/dcc7867432fd4ba664580445a9f7a96329edddc5f556af666654296c9192/redis-websocket-api-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "fd01f5bfea856013e3f9b400ec57e977", "sha256": "847f41bc1faae1691f47200144e926899c6e23baee02a986bed4b1c5f1fa92bb" }, "downloads": -1, "filename": "redis_websocket_api-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "fd01f5bfea856013e3f9b400ec57e977", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9824, "upload_time": "2019-10-08T09:27:05", "url": "https://files.pythonhosted.org/packages/14/99/a1129997068e0bf81693d2d273b32731d65faf52bffbbc36641b3b0de527/redis_websocket_api-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb818bd0ef41560365dc9d12f3f57036", "sha256": "6ad9e58402e5e93f81b1ff04c737f21d236eb6bf6f2c4ae2b43764b01499bc42" }, "downloads": -1, "filename": "redis-websocket-api-0.0.4.tar.gz", "has_sig": false, "md5_digest": "eb818bd0ef41560365dc9d12f3f57036", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9415, "upload_time": "2019-10-08T09:27:07", "url": "https://files.pythonhosted.org/packages/15/4d/755da048417a44aa1b5a2712705080a141a7b58d99a3cad367e4865ab869/redis-websocket-api-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "83373a0e81607b17f8a5f70682862d8b", "sha256": "ebba1122f1662ee5f71d6570779386e955c8d40562e69808898b91d495e808c7" }, "downloads": -1, "filename": "redis_websocket_api-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "83373a0e81607b17f8a5f70682862d8b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9939, "upload_time": "2019-10-09T10:14:16", "url": "https://files.pythonhosted.org/packages/29/6c/03e93c5ea2002419953d907d7a0c70d68a06d184b6d860e28da4a4dac07a/redis_websocket_api-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94ce7a635f14b42b093adc1ab84272ed", "sha256": "5ef32033e778e40f614a02bf40c8986cad57628e939008d80d46872a0c529f17" }, "downloads": -1, "filename": "redis-websocket-api-0.0.5.tar.gz", "has_sig": false, "md5_digest": "94ce7a635f14b42b093adc1ab84272ed", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9481, "upload_time": "2019-10-09T10:14:17", "url": "https://files.pythonhosted.org/packages/d1/63/7648e66ca63ad0e637d45a5ef9c02f45f5538a36fc0c0c28b4d515eada47/redis-websocket-api-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "61fccd01647bd7eab0566280f8c86ebf", "sha256": "1b9723fd720a64a6cc375ac5f4d809034910036d0c5658d03d952804ac5a7b38" }, "downloads": -1, "filename": "redis_websocket_api-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "61fccd01647bd7eab0566280f8c86ebf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 9983, "upload_time": "2019-10-15T07:54:28", "url": "https://files.pythonhosted.org/packages/27/f1/e84a91f042c2779398f165a8720aab32f77dc9f59507d6bdf422f8f67523/redis_websocket_api-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d62bb72228acf5a0c73d8b550b74f847", "sha256": "193cd23dd177042a6bc3059c39d6ca4e4ada26afd55694d3ea8dd6bc8824df98" }, "downloads": -1, "filename": "redis-websocket-api-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d62bb72228acf5a0c73d8b550b74f847", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9520, "upload_time": "2019-10-15T07:54:30", "url": "https://files.pythonhosted.org/packages/5e/cf/3ae95b29e41c2d1fbac828a82dd72f7d7d5e00e9fc7f648734c6e2ea54c8/redis-websocket-api-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "92f2b998abbe00c73fb9fd56eb88a9cb", "sha256": "af919d1258d046b668583b290c9b880d320e36a925d6ec7951175f85710fec3f" }, "downloads": -1, "filename": "redis_websocket_api-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "92f2b998abbe00c73fb9fd56eb88a9cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10203, "upload_time": "2019-10-15T14:26:38", "url": "https://files.pythonhosted.org/packages/bd/87/66f624dafb5dac17f8e9e8cd0b9fcf48f59eb9aaaf9228c853a01c68df94/redis_websocket_api-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec25ca020825a42ee8067c1b1ed5f809", "sha256": "8ee00b9607954b0d22c2457acbe922d038daf2f6422cb85ae5591d76edd8ab0a" }, "downloads": -1, "filename": "redis-websocket-api-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ec25ca020825a42ee8067c1b1ed5f809", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9885, "upload_time": "2019-10-15T14:26:40", "url": "https://files.pythonhosted.org/packages/b2/d3/07e196fc7ae63b25f5b764c2cb4ce5108211e65695ec4f8f5656e8b96542/redis-websocket-api-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "92f2b998abbe00c73fb9fd56eb88a9cb", "sha256": "af919d1258d046b668583b290c9b880d320e36a925d6ec7951175f85710fec3f" }, "downloads": -1, "filename": "redis_websocket_api-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "92f2b998abbe00c73fb9fd56eb88a9cb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 10203, "upload_time": "2019-10-15T14:26:38", "url": "https://files.pythonhosted.org/packages/bd/87/66f624dafb5dac17f8e9e8cd0b9fcf48f59eb9aaaf9228c853a01c68df94/redis_websocket_api-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec25ca020825a42ee8067c1b1ed5f809", "sha256": "8ee00b9607954b0d22c2457acbe922d038daf2f6422cb85ae5591d76edd8ab0a" }, "downloads": -1, "filename": "redis-websocket-api-0.2.0.tar.gz", "has_sig": false, "md5_digest": "ec25ca020825a42ee8067c1b1ed5f809", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 9885, "upload_time": "2019-10-15T14:26:40", "url": "https://files.pythonhosted.org/packages/b2/d3/07e196fc7ae63b25f5b764c2cb4ce5108211e65695ec4f8f5656e8b96542/redis-websocket-api-0.2.0.tar.gz" } ] }