{ "info": { "author": "Leo Noordergraaf", "author_email": "leo@noordergraaf.net", "bugtrack_url": null, "classifiers": [], "description": "tinyrpc: A small and modular way of handling web-related RPC\n============================================================\n\n.. image:: https://readthedocs.org/projects/tinyrpc/badge/?version=latest\n :target: https://tinyrpc.readthedocs.io/en/latest\n.. image:: https://travis-ci.org/mbr/tinyrpc.svg?branch=master\n :target: https://travis-ci.org/mbr/tinyrpc\n.. image:: https://badge.fury.io/py/tinyrpc.svg\n :target: https://pypi.org/project/tinyrpc/\n\nNote\n----\n\nTinyrpc has been revised.\n\nThe current version will support Python3 only.\nHave a look at the 0.9.x version if you need Python2 support.\nPython2 support will be dropped completely when Python2 retires,\nsomewhere in 2020.\n\nMotivation\n----------\n\nAs of this writing (in Jan 2013) there are a few jsonrpc_ libraries already out\nthere on PyPI_, most of them handling one specific use case (e.g. json via\nWSGI, using Twisted, or TCP-sockets).\n\nNone of the libraries, however, makes it easy to reuse the jsonrpc_-parsing bits\nand substitute a different transport (i.e. going from json_ via TCP_ to an\nimplementation using WebSockets_ or 0mq_).\n\nIn the end, all these libraries have their own dispatching interfaces and a\ncustom implementation of handling jsonrpc_. Today (march 2019) that hasn't changed.\n\n``tinyrpc`` aims to do better by dividing the problem into cleanly\ninterchangeable parts that allow easy addition of new transport methods, RPC\nprotocols or dispatchers.\n\nExample:\n\nTo create a server process receiving and handling JSONRPC requests do:\n\n.. code-block:: python\n\n import gevent\n import gevent.pywsgi\n import gevent.queue\n from tinyrpc.protocols.jsonrpc import JSONRPCProtocol\n from tinyrpc.transports.wsgi import WsgiServerTransport\n from tinyrpc.server.gevent import RPCServerGreenlets\n from tinyrpc.dispatch import RPCDispatcher\n\n dispatcher = RPCDispatcher()\n transport = WsgiServerTransport(queue_class=gevent.queue.Queue)\n\n # start wsgi server as a background-greenlet\n wsgi_server = gevent.pywsgi.WSGIServer(('127.0.0.1', 5000), transport.handle)\n gevent.spawn(wsgi_server.serve_forever)\n\n rpc_server = RPCServerGreenlets(transport, JSONRPCProtocol(), dispatcher)\n\n @dispatcher.public\n def reverse_string(s):\n return s[::-1]\n\n # in the main greenlet, run our rpc_server\n rpc_server.serve_forever()\n\nThe corresponding client code looks like:\n\n.. code-block:: python\n\n from tinyrpc.protocols.jsonrpc import JSONRPCProtocol\n from tinyrpc.transports.http import HttpPostClientTransport\n from tinyrpc import RPCClient\n\n rpc_client = RPCClient(\n JSONRPCProtocol(),\n HttpPostClientTransport('http://127.0.0.1:5000/'))\n\n remote_server = rpc_client.get_proxy()\n\n # call a method called 'reverse_string' with a single string argument\n result = remote_server.reverse_string('Hello, World!')\n\n print(\"Server answered:\", result)\n\nDocumentation\n-------------\n\nYou'll quickly find that ``tinyrpc`` has more documentation and tests than core\ncode, hence the name. See the documentation at\n for more details, especially the\nStructure-section to get a birds-eye view.\n\nInstallation\n------------\n\n.. code-block:: sh\n\n pip install tinyrpc\n\nwill install ``tinyrpc`` with its default dependencies.\n\nOptional dependencies\n---------------------\n\nDepending on the protocols and transports you want to use additional dependencies\nare required. You can instruct pip to install these dependencies by specifying\nextras to the basic install command.\n\n.. code-block:: sh\n\n pip install tinyrpc[httpclient, wsgi]\n\nwill install ``tinyrpc`` with dependencies for the httpclient and wsgi transports.\n\nAvailable extras are:\n\n+------------+-------------------------------------------------------+\n| Option | Needed to use objects of class |\n+============+=======================================================+\n| gevent | optional in RPCClient, required by RPCServerGreenlets |\n+------------+-------------------------------------------------------+\n| httpclient | HttpPostClientTransport, HttpWebSocketClientTransport |\n+------------+-------------------------------------------------------+\n| jsonext | optional in JSONRPCProtocol |\n+------------+-------------------------------------------------------+\n| websocket | WSServerTransport |\n+------------+-------------------------------------------------------+\n| wsgi | WsgiServerTransport |\n+------------+-------------------------------------------------------+\n| zmq | ZmqServerTransport, ZmqClientTransport |\n+------------+-------------------------------------------------------+\n\n.. _jsonrpc: http://www.jsonrpc.org/\n.. _PyPI: http://pypi.python.org\n.. _json: http://www.json.org/\n.. _TCP: http://en.wikipedia.org/wiki/Transmission_Control_Protocol\n.. _WebSockets: http://en.wikipedia.org/wiki/WebSocket\n.. _0mq: http://www.zeromq.org/", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/mbr/tinyrpc", "keywords": "json rpc json-rpc jsonrpc 0mq zmq zeromq", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "tinyrpc", "package_url": "https://pypi.org/project/tinyrpc/", "platform": "", "project_url": "https://pypi.org/project/tinyrpc/", "project_urls": { "Homepage": "http://github.com/mbr/tinyrpc" }, "release_url": "https://pypi.org/project/tinyrpc/1.0.3/", "requires_dist": null, "requires_python": "", "summary": "A small, modular, transport and protocol neutral RPC library that, among other things, supports JSON-RPC and zmq.", "version": "1.0.3" }, "last_serial": 5695126, "releases": { "0.1dev": [], "0.3dev": [ { "comment_text": "", "digests": { "md5": "9a22ff586ab319368a2249798990da54", "sha256": "11943846baae28215a46a0aaaeb857c223a9263b3691a7e25b90a7a925df025d" }, "downloads": -1, "filename": "tinyrpc-0.3dev.tar.gz", "has_sig": true, "md5_digest": "9a22ff586ab319368a2249798990da54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7588, "upload_time": "2013-01-26T11:39:44", "url": "https://files.pythonhosted.org/packages/8a/0a/f902073a593c1f5c7ca02cc85095dcee0ee573a1a5bc699e6a502c88b955/tinyrpc-0.3dev.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "dd0fa7971eaf0d34e1764666d684491b", "sha256": "5062fea34505369810c8d3c7a6284a83a5ceb8847f77d537d950c9d23e8fde28" }, "downloads": -1, "filename": "tinyrpc-0.4.tar.gz", "has_sig": true, "md5_digest": "dd0fa7971eaf0d34e1764666d684491b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12073, "upload_time": "2013-02-01T18:57:33", "url": "https://files.pythonhosted.org/packages/e6/9c/317b4fae858e3f4d5aecea6264b6467df5259e80f42b271e08ae662712e5/tinyrpc-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "a7919728ca8b8fe3e7c576dfdbdf6ae7", "sha256": "4b359daa96d74b9b80442d4f35fdf1fae5660f0438f2c53c268c76b522782d23" }, "downloads": -1, "filename": "tinyrpc-0.4.1.tar.gz", "has_sig": true, "md5_digest": "a7919728ca8b8fe3e7c576dfdbdf6ae7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12183, "upload_time": "2013-02-19T23:57:15", "url": "https://files.pythonhosted.org/packages/0a/34/74104cf3e6151270ecf71bcdf106c74d5825bba84624d5a5cd50da3f8f7d/tinyrpc-0.4.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "4bb9ed559bcccc4bf91a7843da781d28", "sha256": "048b23a3a347318aacf83b55899efdd495242e096ff347d5a3f9737b4e38421f" }, "downloads": -1, "filename": "tinyrpc-0.5.tar.gz", "has_sig": true, "md5_digest": "4bb9ed559bcccc4bf91a7843da781d28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12413, "upload_time": "2013-02-24T19:45:49", "url": "https://files.pythonhosted.org/packages/6c/58/76f73176153bf86990381189e1d9b187a8406788d5365c1e2e4ecd078268/tinyrpc-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "2663568ba3e1793da7b21003f0847fdd", "sha256": "b4d64227f023f1f0736ef137bd4c901c7652563e62c7a20329222c3a0b14d84f" }, "downloads": -1, "filename": "tinyrpc-0.6.tar.gz", "has_sig": true, "md5_digest": "2663568ba3e1793da7b21003f0847fdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16846, "upload_time": "2017-08-24T20:02:04", "url": "https://files.pythonhosted.org/packages/2d/c7/0050938873971e20fa66cc916898391c01d9f84b945c5bda387489235fc2/tinyrpc-0.6.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "222553d259ebf64c2516cfbefa09ed4c", "sha256": "65b2182b1277725b3caeb823ff34e2d3d75746153305532654a1db117bbe5fd1" }, "downloads": -1, "filename": "tinyrpc-0.8.tar.gz", "has_sig": false, "md5_digest": "222553d259ebf64c2516cfbefa09ed4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17632, "upload_time": "2018-02-14T20:50:40", "url": "https://files.pythonhosted.org/packages/18/f7/3e29caf829046bff81933f7c1b77120bc7da1be0cd679cf0bb0c9b0b80c1/tinyrpc-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "1d3e5a85e847d268189eaea61b45e195", "sha256": "4c2f5fb826b49f16af91d18e9958a32d3048829a9cbd8881f985bd9c743ebcd5" }, "downloads": -1, "filename": "tinyrpc-0.9.tar.gz", "has_sig": false, "md5_digest": "1d3e5a85e847d268189eaea61b45e195", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17684, "upload_time": "2018-04-29T15:34:08", "url": "https://files.pythonhosted.org/packages/05/0d/417f54826aefd2a54be7fcb13b97d30ea0b5ff50b3db5dc4e3be65836fe8/tinyrpc-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "89c51b844adfbfad455a7a1184d3ab25", "sha256": "90c8324a415693c60f11bd13d0b2d19c909d459d034f17b843b3354281471e95" }, "downloads": -1, "filename": "tinyrpc-0.9.1.tar.gz", "has_sig": false, "md5_digest": "89c51b844adfbfad455a7a1184d3ab25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16705, "upload_time": "2018-04-30T09:27:32", "url": "https://files.pythonhosted.org/packages/90/c7/d91dc2eeb8d6ce15c23062f57255d78be8df4a803d8d4ba52c52c1c2fde9/tinyrpc-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "7497d8164fc04a39cb896811f0481761", "sha256": "67fd936c4fec8a69ade99cc9c98d9242d1b07027cc07ed727fdc32d2b7ffca0b" }, "downloads": -1, "filename": "tinyrpc-0.9.2.tar.gz", "has_sig": false, "md5_digest": "7497d8164fc04a39cb896811f0481761", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18341, "upload_time": "2018-07-16T06:51:27", "url": "https://files.pythonhosted.org/packages/67/46/ccf7fc41265baf3731e6cb4db1f6f5759002da2ac3cd9be1bd5b15a4b6da/tinyrpc-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "38cf2063e88806ecab83d4be7c810e5f", "sha256": "3915c7c5319059b07f0ca049c0ff6f151f547a6c763fb9b0054dc04cb6781cef" }, "downloads": -1, "filename": "tinyrpc-0.9.3.tar.gz", "has_sig": false, "md5_digest": "38cf2063e88806ecab83d4be7c810e5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18431, "upload_time": "2018-08-27T07:34:35", "url": "https://files.pythonhosted.org/packages/a6/0d/fc95d021561f1097361e16ebe06abf7acda74954eed88147ba7b3885ff49/tinyrpc-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "1eea1ea3ece8596f88012d115191bfd4", "sha256": "7fc67de35015bdddbd24ca71b16c147beb771091197d1b1e2cb4e9ab63ded661" }, "downloads": -1, "filename": "tinyrpc-0.9.4.tar.gz", "has_sig": false, "md5_digest": "1eea1ea3ece8596f88012d115191bfd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18432, "upload_time": "2019-01-30T21:56:32", "url": "https://files.pythonhosted.org/packages/ba/c0/837060e3612636d4c93d3455983b9b610fb2dbc0abcfb2518ef132a355a7/tinyrpc-0.9.4.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "e570c6d6a2c4d4fd9382c2202facfaa3", "sha256": "a2fe59cc0db1a3ac67ae323f7513053db02a1895ae37fe12eaef6df76fe35478" }, "downloads": -1, "filename": "tinyrpc-1.0.0.tar.gz", "has_sig": false, "md5_digest": "e570c6d6a2c4d4fd9382c2202facfaa3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23254, "upload_time": "2019-04-01T09:33:36", "url": "https://files.pythonhosted.org/packages/4d/ea/fc066906e5bd23fcb28e8c1e65329c08943c84c16ee847e57ce70d121df0/tinyrpc-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "ee8fd20fb4879d4ec96500e50333b6cf", "sha256": "4572c9d63b056b5eb24bae5e0894115fe6b5c3fa314851d9df439c7d3f8e9d2b" }, "downloads": -1, "filename": "tinyrpc-1.0.1.tar.gz", "has_sig": false, "md5_digest": "ee8fd20fb4879d4ec96500e50333b6cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23299, "upload_time": "2019-04-09T14:15:02", "url": "https://files.pythonhosted.org/packages/1f/f9/d2f9aa8238fc4f3f92e3912b3768c67e3b74257fdf47da2db391354be285/tinyrpc-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ed0426cc25f644478c22cbf153a09b30", "sha256": "ca36a339de6e6129a0caa09fb9423937b8d7cab57a8fc040be0bf8fd6a2cf93a" }, "downloads": -1, "filename": "tinyrpc-1.0.2.tar.gz", "has_sig": false, "md5_digest": "ed0426cc25f644478c22cbf153a09b30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23507, "upload_time": "2019-06-17T13:52:06", "url": "https://files.pythonhosted.org/packages/26/55/1e53e00c8134beb5cf23fb1db775610ed784bdb78109591816368e4b9b1c/tinyrpc-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "b3a95133c65c7b5b5eb4f88c4713e909", "sha256": "aa9f707a26cea5fd69af55fea28e8761f96b244e00efe3c8ccbeb233d5a9852e" }, "downloads": -1, "filename": "tinyrpc-1.0.3.tar.gz", "has_sig": false, "md5_digest": "b3a95133c65c7b5b5eb4f88c4713e909", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23528, "upload_time": "2019-08-18T16:25:43", "url": "https://files.pythonhosted.org/packages/21/7a/ff1a74256e1bcc04fbaa414c13a2bb79a29ac9918b25f2238592b991e3bc/tinyrpc-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b3a95133c65c7b5b5eb4f88c4713e909", "sha256": "aa9f707a26cea5fd69af55fea28e8761f96b244e00efe3c8ccbeb233d5a9852e" }, "downloads": -1, "filename": "tinyrpc-1.0.3.tar.gz", "has_sig": false, "md5_digest": "b3a95133c65c7b5b5eb4f88c4713e909", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23528, "upload_time": "2019-08-18T16:25:43", "url": "https://files.pythonhosted.org/packages/21/7a/ff1a74256e1bcc04fbaa414c13a2bb79a29ac9918b25f2238592b991e3bc/tinyrpc-1.0.3.tar.gz" } ] }