{ "info": { "author": "ruifengyun", "author_email": "rfyiamcool@163.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.0", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# swift_rpc\n\nswift_rpc\u662f\u7528tornado\u5b9e\u73b0\u7684rpc\u670d\u52a1,\u73b0\u5728\u5f00\u653e\u4e86\u56db\u4e2a\u8c03\u5ea6\u63a5\u53e3: \n\n[\u66f4\u591a\u7684\u5173\u4e8eswift\u7684\u5f00\u53d1\u4fe1\u606f](http://xiaorui.cc)\n\n1. register \u666e\u901a\u63a5\u53e3\u8c03\u7528\u6a21\u5f0f,\u6700\u7eaf\u7cb9\u6700\u7b80\u5355 \n2. register_async \u501f\u52a9\u4e8etornado gen.coroutine\u5b9e\u73b0\u7684\u975e\u5835\u585e\u8c03\u7528 \n3. register_pool \u501f\u52a9\u4e8efutures.ThreadPoolExecutor\u5b9e\u73b0\u7ebf\u7a0b\u6c60 \n4. register_mq \u901a\u8fc7mq\u5f02\u6b65\u8c03\u7528\u65b9\u6cd5\uff0c\u9002\u5408\u540e\u7aef\u957f\u65f6\u95f4\u8fd0\u7b97\u6216\u8017\u65f6\u7684\u8c03\u7528\n\nChange Log: \n\nVersion: 2.1 \n1. \u89e3\u51b3Nginx\u9488\u5bf9RPC\u8d1f\u8f7d\u5747\u8861\u65f6\uff0c\u65e0\u6cd5\u6b63\u5e38\u83b7\u53d6remote_ip\n\nVersion: 2.2 \n1. rq enqueue\u585e\u5165\u4efb\u52a1\u961f\u5217\u65f6\u7684\u4e00\u4e2abug,\u5df2\u7ecf\u7ed5\u8fc7\u89e3\u51b3\n\nVersion: 2.3 \n1. \u89e3\u51b3\u4e86curl\u8c03\u7528rq\u7684get_result\u65f6\u51fa\u73b0\u76840x80 code\u5f02\u5e38\n\nVersion: 2.4 \n1. \u65e5\u5fd7\u53ca\u52a0\u5bc6\u6a21\u5f0f\n\nVersion: 2.5 \n1. \u52a0\u5165\u81ea\u5b9a\u4e49\u7684AES\u52a0\u5bc6\u7b97\u6cd5\u652f\u6301\n\nFuture: \n1. \u7edf\u4e00\u914d\u7f6e\u914d\u7f6e\u6587\u4ef6 \n2. \u4f7f\u7528rsa\u4fdd\u8bc1rpc\u901a\u4fe1\u5b89\u5168 \n3. swift_rpc\u5b8c\u5584RQ\u5f02\u6b65\u4efb\u52a1\u961f\u5217 \n4. \u589e\u52a0request json body\u7684\u8bc6\u522b,\u5728\u8fd9\u57fa\u7840\u4e0a\u505a\u5b89\u5168\u7684\u5c01\u88c5\n\n\n\u6d4b\u8bd5json body\u7684args,kwargs: \n```\ncurl -H \"Content-Type: application/json\" -H \"User-Agent: swift_rpc\" -X GET -d '{\"args\":\"[123,456]\",\"kwargs\":{\"name\":1}}' http://localhost:8080/test_args\ncurl -H \"Content-Type: application/json\" -H \"User-Agent: swift_rpc\" -X GET -d '{\"args\":\"123\"}' http://localhost:8080/test\n```\n\n\u6d4b\u8bd5\u9009\u62e9\u52a0\u5bc6\u6a21\u5f0f: \n```\ncurl -H \"Encryption: base64\" -H \"Content-Type: application/json\" -H \"User-Agent: swift_rpc\" -X GET -d '{\"args\": [123, 456], \"kwargs\": {\"name\": 1}}' http://localhost:8080/test_args\n```\n\n\u6d4b\u8bd5arguments\u7684args,kwargs: \n```\ncurl -H \"User-Agent: swift_rpc\" -X GET -d \"args=123\" http://localhost:8080/test\n```\n\nTornado RPC Server Usage:\n\n```\n#coding:utf-8\nimport sys\nreload(sys)\nsys.setdefaultencoding(\"utf-8\") \n\nimport time\nfrom tornado import gen\nfrom swift_rpc.server import RPCServer\nfrom swift_rpc.mq import rq_conn\nfrom swift_rpc.mq import redis_conn\nfrom swift_rpc.mq import fetch\nfrom config import *\nfrom api import *\n\ndef test(args):\n return \"this is test %s\"%(args)\n\ndef test_args(a,b,name='xiaorui.cc'):\n print a,b,name\n return \"this is test %s %s\"%(a,name)\n\ndef get_result(job_id):\n return redis_conn.hgetall(job_id)\n\ndef test_block(args):\n time.sleep(5)\n return \"You said \"\n\n@gen.coroutine\ndef test_async(arg):\n return gen.Return(\"this is test_async async %s\" % arg)\n\nif __name__ == \"__main__\":\n server = RPCServer()\n server.register(test)\n server.register(test_args)\n server.register(get_result)\n server.register_async(test_async)\n server.register_pool(test_block)\n server.register_mq(test_mq)\n server.register_mq(go)\n server.start(RPC_HOST,RPC_PORT)\n```\n\nswift_rpc client Usage:\n\n```\nfrom swift_rpc.client import RPCClient\n\nclient = RPCClient('localhost:8080')\nprint client.test('hi')\nprint client.test_args('welcome','xiaorui.cc',name='nima')\n```", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rfyiamcool", "keywords": "tornado,fengyun", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "swift_rpc", "package_url": "https://pypi.org/project/swift_rpc/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/swift_rpc/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/rfyiamcool" }, "release_url": "https://pypi.org/project/swift_rpc/2.5/", "requires_dist": null, "requires_python": null, "summary": "tornado rpc", "version": "2.5" }, "last_serial": 1812753, "releases": { "2.0": [ { "comment_text": "", "digests": { "md5": "b8ce6817346c05af8c8f665391f7a262", "sha256": "54117c5987a30aa830b450a786f4ca9bff5afc7ad089e7fd55239b10766cd615" }, "downloads": -1, "filename": "swift_rpc-2.0.tar.gz", "has_sig": false, "md5_digest": "b8ce6817346c05af8c8f665391f7a262", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4140, "upload_time": "2015-11-10T08:58:14", "url": "https://files.pythonhosted.org/packages/fc/29/b45a5b4d1b70e2f6a416278001144a2fee0a2b4859b0c94e30907fe5fb5e/swift_rpc-2.0.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "ac28225185eb658d6e48f521e85553d0", "sha256": "a5ed636a8dba7e3a67cb61976501946b65fbb976283ef8a1336be9727e32015f" }, "downloads": -1, "filename": "swift_rpc-2.3.tar.gz", "has_sig": false, "md5_digest": "ac28225185eb658d6e48f521e85553d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4751, "upload_time": "2015-11-10T18:55:20", "url": "https://files.pythonhosted.org/packages/32/9b/6a568eb5ace37f7de8d18aacb420c74dc21e6b45ee97647bfdd13d782ec3/swift_rpc-2.3.tar.gz" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "b87e2ab0bf4dea3e28f192e2c439d3ba", "sha256": "9ab5b39ef7a47a74cd70da0fe8379b3dcc7f79e552af09ff38c68ff75eee452c" }, "downloads": -1, "filename": "swift_rpc-2.4.tar.gz", "has_sig": false, "md5_digest": "b87e2ab0bf4dea3e28f192e2c439d3ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5922, "upload_time": "2015-11-12T07:08:36", "url": "https://files.pythonhosted.org/packages/b5/c0/9c33f85f97166b292c790c58707a3432e54c134abc7447b78a9e593329a1/swift_rpc-2.4.tar.gz" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "90f837dfc091e3bec5a7657e620d2d06", "sha256": "df635ab202b1a6eca1edff43edd0c6ea61c7e7134c711ae39cf31f9a0f2e4fc1" }, "downloads": -1, "filename": "swift_rpc-2.5.tar.gz", "has_sig": false, "md5_digest": "90f837dfc091e3bec5a7657e620d2d06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6405, "upload_time": "2015-11-12T09:11:49", "url": "https://files.pythonhosted.org/packages/bf/34/90ca4c1106fff5a3c1b6a6637633cb46361f6930e3d7559651c5615dfed5/swift_rpc-2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "90f837dfc091e3bec5a7657e620d2d06", "sha256": "df635ab202b1a6eca1edff43edd0c6ea61c7e7134c711ae39cf31f9a0f2e4fc1" }, "downloads": -1, "filename": "swift_rpc-2.5.tar.gz", "has_sig": false, "md5_digest": "90f837dfc091e3bec5a7657e620d2d06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6405, "upload_time": "2015-11-12T09:11:49", "url": "https://files.pythonhosted.org/packages/bf/34/90ca4c1106fff5a3c1b6a6637633cb46361f6930e3d7559651c5615dfed5/swift_rpc-2.5.tar.gz" } ] }