{ "info": { "author": "hsz", "author_email": "hsz1273327@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Documentation :: Sphinx" ], "description": "\ufeff\npymprpc\n===============================\n\n* version: 0.0.3\n\n* status: dev\n\n* author: hsz\n\n* email: hsz1273327@gmail.com\n\nDesc\n--------------------------------\n\n a rpc framework for message-pack rpc.\n\n\nkeywords:rpc,server,tcp\n\n\nFeature\n----------------------\n* api seems to stdlib xmlrpc\n* easy to use, easy to debug\n* support stream response\n\nExample\n-------------------------------\n\nserver\n\n.. code:: python\n\n import platform\n from pymprpc.server import SimpleMprpcServer\n if platform.system() == \"Windows\":\n try:\n import aio_windows_patch as asyncio\n except:\n import warnings\n warnings.warn(\n \"you should install aio_windows_patch to support windows\",\n RuntimeWarning,\n stacklevel=3)\n import asyncio\n\n else:\n import asyncio\n try:\n import uvloop\n asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())\n except ImportError:\n pass\n\n\n class MyMPRPCServer(SimpleMprpcServer):\n pass\n\n\n with MyMPRPCServer((\"127.0.0.1\", 5000), debug=True) as server:\n server.register_introspection_functions()\n\n @server.register_function()\n def testfunc(a, b):\n '''\u6709help'''\n return a + b\n\n @server.register_function()\n async def testcoro(a, b):\n await asyncio.sleep(0.1)\n return a + b\n\n @server.register_function()\n async def testcorogen(a, b):\n for i in range(10):\n await asyncio.sleep(0.1)\n yield i + a + b\n\n class TestClass:\n\n def testclassmethod(self, a, b):\n return a + b\n\n async def testclasscoro(self, a, b):\n await asyncio.sleep(0.1)\n return a + b\n\n async def testclasscorogen(self, a, b):\n for i in range(10):\n await asyncio.sleep(0.1)\n yield i + a + b\n t = TestClass()\n server.register_instance(t)\n server.run_forever()\n\n\nsync client\n\n.. code:: python\n\n import time\n from pymprpc.client import RPC\n\n with RPC(addr=\"tcp://admin:admin@127.0.0.1:5000\",\n debug=True) as rpc:\n print(rpc.system.listMethods())\n print(rpc.system.methodSignature(\"testclassmethod\"))\n print(rpc.system.methodHelp(\"testfunc\"))\n print(rpc.system.lenConnections())\n print(rpc.system.lenUndoneTasks())\n print(rpc.testclassmethod(1, 2))\n print(rpc.testclasscoro(2, 3))\n print(rpc.testcoro(5, 6))\n print(rpc.testfunc(5, 4))\n agen = rpc.testcorogen(1, 2)\n for i in agen:\n print(i)\n time.sleep(200)\n print(\"wait done\")\n # rpc.close()\n print(rpc.testfunc())\n\n\n\nasync client\n\n.. code:: python\n\n import asyncio\n from pymprpc.client import AsyncRPC\n\n\n async def main(loop):\n async with AsyncRPC(\n addr=\"tcp://admin:admin@127.0.0.1:5000\",\n loop=loop,\n debug=True) as rpc:\n print(await rpc.system.listMethods())\n print(await rpc.system.methodSignature(\"testclassmethod\"))\n print(await rpc.system.methodHelp(\"testfunc\"))\n print(await rpc.system.lenConnections())\n print(await rpc.system.lenUndoneTasks())\n print(await rpc.testclassmethod(1, 2))\n print(await rpc.testclasscoro(2, 3))\n print(await rpc.testcoro(5, 6))\n print(await rpc.testfunc(5, 4))\n # await asyncio.sleep(200)\n print(\"wait done\")\n print(await rpc.testfunc())\n print(\"end\")\n loop = asyncio.get_event_loop()\n try:\n loop.run_until_complete(main(loop))\n except Exception as e:\n raise e\n\n\nInstall\n--------------------------------\n\n- ``python -m pip install pymprpc``\n\n\nDocumentation\n--------------------------------\n\n`Documentation on Readthedocs `_.\n\n\n\nTODO\n-----------------------------------\n\n* Load balancing broker\n\nLimitations\n-----------\n\n* sync client do not support heartbeat and timeout\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Basic-Components/msgpack-rpc-protocol", "keywords": "rpc", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pymprpc", "package_url": "https://pypi.org/project/pymprpc/", "platform": "", "project_url": "https://pypi.org/project/pymprpc/", "project_urls": { "Homepage": "https://github.com/Basic-Components/msgpack-rpc-protocol" }, "release_url": "https://pypi.org/project/pymprpc/0.0.3/", "requires_dist": null, "requires_python": "", "summary": " a rpc framework for message-pack rpc.", "version": "0.0.3" }, "last_serial": 3593210, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "e82b7d8cab159f33f0b772e75db142b1", "sha256": "89769c5da8fc4df2d0913e51d3fdeb7b7b3a1273ddaf7200df8a7d82a1e9e9c7" }, "downloads": -1, "filename": "pymprpc-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e82b7d8cab159f33f0b772e75db142b1", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 31455, "upload_time": "2018-02-11T09:59:56", "url": "https://files.pythonhosted.org/packages/5b/d2/81a832d36c7fead04e6476ea4833724ac4e9f7f8760bd27fa1af1995ff5c/pymprpc-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fbe9472734951835adf3736ddb021778", "sha256": "b5861af9c97f85a0abad27fd58c6d7229134ed458a7ac3b580823ae36d00a13a" }, "downloads": -1, "filename": "pymprpc-0.0.1.tar.gz", "has_sig": false, "md5_digest": "fbe9472734951835adf3736ddb021778", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22089, "upload_time": "2018-02-11T09:59:51", "url": "https://files.pythonhosted.org/packages/9e/6b/d3894facda308033a62f30e77e5e07fb56e0bf2844b2c296d3c4d04dbddc/pymprpc-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "db3ea53cb9dd4874cb1ceed3e5fd4ff5", "sha256": "ff82a055f3815ba3315461b0594f09f05ca81d57e1045c0744ffa648b1c3fc89" }, "downloads": -1, "filename": "pymprpc-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "db3ea53cb9dd4874cb1ceed3e5fd4ff5", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 32667, "upload_time": "2018-02-14T03:18:45", "url": "https://files.pythonhosted.org/packages/81/78/bb5ce5a469ff7cebb43881b433443a9dff63247dc28a26e1fc7377ca386a/pymprpc-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "32792efa8752c436b1a81fb756915d27", "sha256": "78193d0cdd34268f11116d198119237529e159e9a6d7c24376ec12f9ff6d4bf6" }, "downloads": -1, "filename": "pymprpc-0.0.2.tar.gz", "has_sig": false, "md5_digest": "32792efa8752c436b1a81fb756915d27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21864, "upload_time": "2018-02-14T03:18:40", "url": "https://files.pythonhosted.org/packages/53/17/5359e9d1a079bdea1ff266ff22fc5fc2f04e9e3c85a8459db08ebb092c5f/pymprpc-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "915eb1cbb8ef594ee9f3d777895b2229", "sha256": "9ae941391d1ae87be04f1a9b010d9c02284f53e48e3543d0b58df4d639e1de84" }, "downloads": -1, "filename": "pymprpc-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "915eb1cbb8ef594ee9f3d777895b2229", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 33265, "upload_time": "2018-02-18T12:49:07", "url": "https://files.pythonhosted.org/packages/af/44/4c4fd709abef6038b48e63c622f973ba374328959e7aa6562ee1f4a6a125/pymprpc-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6beb4103764d353a19846431137eb632", "sha256": "00eac8096b21d7b3afa20e986feb5912e5062d2ff5a2b77292493723eebe8296" }, "downloads": -1, "filename": "pymprpc-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6beb4103764d353a19846431137eb632", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22445, "upload_time": "2018-02-18T12:49:01", "url": "https://files.pythonhosted.org/packages/0e/dd/cd336501b20a6dd011967c2a88e6993542e66b49013bb05b606fd0f6f7c1/pymprpc-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "915eb1cbb8ef594ee9f3d777895b2229", "sha256": "9ae941391d1ae87be04f1a9b010d9c02284f53e48e3543d0b58df4d639e1de84" }, "downloads": -1, "filename": "pymprpc-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "915eb1cbb8ef594ee9f3d777895b2229", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 33265, "upload_time": "2018-02-18T12:49:07", "url": "https://files.pythonhosted.org/packages/af/44/4c4fd709abef6038b48e63c622f973ba374328959e7aa6562ee1f4a6a125/pymprpc-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6beb4103764d353a19846431137eb632", "sha256": "00eac8096b21d7b3afa20e986feb5912e5062d2ff5a2b77292493723eebe8296" }, "downloads": -1, "filename": "pymprpc-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6beb4103764d353a19846431137eb632", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22445, "upload_time": "2018-02-18T12:49:01", "url": "https://files.pythonhosted.org/packages/0e/dd/cd336501b20a6dd011967c2a88e6993542e66b49013bb05b606fd0f6f7c1/pymprpc-0.0.3.tar.gz" } ] }