{ "info": { "author": "Timmy", "author_email": "zhu327@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# Doge\n\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/zhu327/doge/blob/master/LICENSE)\n[![Build Status](https://travis-ci.org/zhu327/doge.svg?branch=master)](https://travis-ci.org/zhu327/doge)\n[![codecov](https://codecov.io/gh/zhu327/doge/branch/master/graph/badge.svg)](https://codecov.io/gh/zhu327/doge)\n\nDoge is a Python RPC framework like [Alibaba Dubbo](http://dubbo.io/) and [Weibo Motan](https://github.com/weibocom/motan).\n\n## Features\n\n![doge](https://camo.githubusercontent.com/51ff9a1d5530f269f3074e9172483acf14c73eb8/687474703a2f2f6e2e73696e61696d672e636e2f746563682f7472616e73666f726d2f32303136303531302f4a7458792d66787279686875323338323938372e6a7067)\n\n- \u670d\u52a1\u6cbb\u7406, \u670d\u52a1\u6ce8\u518c, \u670d\u52a1\u53d1\u73b0\n- \u9ad8\u53ef\u7528\u7b56\u7565, failover, backupRequestHA\n- \u8d1f\u8f7d\u5747\u8861\u7b56\u7565, RandomLB, RoundrobinLB\n- \u9650\u6d41\u7b56\u7565, gevent Pool\n\n## Quick Start\n\n### Installation\n\n```sh\npip install dogerpc\n```\n\n\u4f60\u53ef\u4ee5\u5728[examples](https://github.com/zhu327/doge/tree/master/examples)\u627e\u5230\u4ee5\u4e0b\u5b9e\u4f8b\n\n### Doge server\n\n1. \u65b0\u5efaserver\u7aef\u914d\u7f6e\u6587\u4ef6\n\n```javascript\n{\n \"registry\": { // \u6ce8\u518c\u4e2d\u5fc3\n \"protocol\": \"etcd\", // \u6ce8\u518c\u534f\u8bae, \u652f\u6301 etcd \u4e0e direct, \u9ed8\u8ba4 etcd\n \"host\": \"127.0.0.1\", // \u6ce8\u518c\u4e2d\u5fc3 host\n \"port\": 2379, // \u6ce8\u518c\u4e2d\u5fc3 port\n // \"address\": \"127.0.0.1:2379,127.0.0.1:4001\", // \u6ce8\u518c\u4e2d\u5fc3\u5730\u5740, \u5982\u679c\u6709etcd\u96c6\u7fa4, \u53ef\u914d\u7f6e\u591a\u4e2anode\n \"ttl\": 10 // etcd\u6ce8\u518cttl, \u7528\u4e8eserver\u7684\u5fc3\u8df3\u68c0\u67e5, \u9ed8\u8ba410s\n },\n \"service\": {\n \"name\": \"test\", // \u670d\u52a1\u540d\u79f0\n \"node\": \"n1\",\u3000// \u8282\u70b9\u540d\u79f0\n \"host\": \"127.0.0.1\", // \u670d\u52a1\u66b4\u9732ip\n \"port\": 4399, // \u670d\u52a1\u66b4\u9732port\n \"limitConn\": 100 // \u670d\u52a1\u6700\u5927\u8fde\u63a5\u6570, \u53ef\u9009, \u9ed8\u8ba4\u4e0d\u9650\u5236\n }\n}\n```\n\n2. \u5b9a\u4e49RPC methods\u7c7b, \u542f\u52a8\u670d\u52a1\n\n```python\n# coding: utf-8\n\nfrom gevent import monkey\nmonkey.patch_socket() # \u4f9d\u8d56gevent\n\nimport logging\nlogging.basicConfig(level=logging.DEBUG)\n\nfrom doge.rpc.server import new_server\n\n\n# \u5b9a\u4e49rpc\u65b9\u6cd5\u7c7b\nclass Sum(object):\n def sum(self, x, y):\n return x + y\n\n\nif __name__ == '__main__':\n server = new_server('server.json') # \u57fa\u4e8e\u914d\u7f6e\u6587\u4ef6\u5b9e\u4f8b\u5316server\u5bf9\u8c61\n server.load(Sum) # \u52a0\u8f7d\u66b4\u9732rpc\u65b9\u6cd5\u7c7b\n server.run() # \u542f\u52a8\u670d\u52a1\u5e76\u6ce8\u518c\u8282\u70b9\u4fe1\u606f\u5230\u6ce8\u518c\u4e2d\u5fc3\n```\n\n### Doge client\n\n1. \u65b0\u5efaclient\u7aef\u914d\u7f6e\u6587\u4ef6\n\n```javascript\n{\n \"registry\": { // \u6ce8\u518c\u4e2d\u5fc3\n \"protocol\": \"etcd\", // \u6ce8\u518c\u534f\u8bae, \u652f\u6301 etcd \u4e0e direct, \u9ed8\u8ba4 etcd\n \"host\": \"127.0.0.1\", // \u6ce8\u518c\u4e2d\u5fc3 host\n \"port\": 2379, // \u6ce8\u518c\u4e2d\u5fc3 port\n // \"address\": \"127.0.0.1:2379,127.0.0.1:4001\", // \u6ce8\u518c\u4e2d\u5fc3\u5730\u5740, \u5982\u679c\u6709etcd\u96c6\u7fa4, \u53ef\u914d\u7f6e\u591a\u4e2anode\n \"ttl\": 10 // etcd\u6ce8\u518cttl, \u7528\u4e8eserver\u7684\u5fc3\u8df3\u68c0\u67e5, \u9ed8\u8ba410s\n },\n \"refer\": {\n \"haStrategy\": \"failover\", // \u9ad8\u53ef\u7528\u7b56\u7565, \u652f\u6301 failover backupRequestHA, \u9ed8\u8ba4failover\n \"loadbalance\": \"RoundrobinLB\", // \u8d1f\u8f7d\u5747\u8861\u7b56\u7565, \u652f\u6301 RandomLB RoundrobinLB, \u9ed8\u8ba4RoundrobinLB\n }\n}\n```\n\n2. \u521b\u5efaclient\u5e76call\u8fdc\u7a0b\u65b9\u6cd5\n\n```python\n# coding: utf-8\n\nfrom __future__ import print_function\n\nfrom gevent import monkey\nmonkey.patch_socket()\n\nimport logging\nlogging.basicConfig(level=logging.DEBUG)\n\nfrom doge.rpc.client import Cluster\n\nif __name__ == '__main__':\n cluster = Cluster('client.json') # \u57fa\u4e8e\u914d\u7f6e\u6587\u4ef6\u5b9e\u4f8b\u5316Cluster\u5bf9\u8c61\n client = cluster.get_client(\"test\") # \u83b7\u53d6\u670d\u52a1\u540d\u5bf9\u5e94\u7684Client\u5bf9\u8c61\n print(client.call('sum', 1, 2)) # \u8fdc\u7a0b\u8c03\u7528\u670d\u52a1Sum\u7c7b\u4e0b\u7684sum\u65b9\u6cd5\n```\n\n## doge json gateway\n\n\u57fa\u4e8eBottle\u5b9e\u73b0\u7684json rpc gateway\n\n\n\n## Requirements\n\n- [gevent](https://github.com/gevent/gevent)\n- [mprpc](https://github.com/studio-ousia/mprpc)\n- [python-etcd](https://github.com/jplana/python-etcd)\n- [pyformance](https://github.com/omergertel/pyformance)\n\n## License\n\nApache License, Version 2.0 \n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/zhu327/doge", "keywords": "rpc,etcd,messagepack,gevent,microservices", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "dogerpc", "package_url": "https://pypi.org/project/dogerpc/", "platform": "", "project_url": "https://pypi.org/project/dogerpc/", "project_urls": { "Homepage": "http://github.com/zhu327/doge" }, "release_url": "https://pypi.org/project/dogerpc/0.1.4/", "requires_dist": [ "mprpc", "pyformance", "python-etcd" ], "requires_python": "", "summary": "A RPC Framework", "version": "0.1.4" }, "last_serial": 3699645, "releases": { "0.1.4": [ { "comment_text": "", "digests": { "md5": "5840c1bc19d0d429b1a41fd162c48cbc", "sha256": "bfc66bfa9b98e14cafc756e2642d1c3feea79731fc945b8f72fe74e5acaf0756" }, "downloads": -1, "filename": "dogerpc-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5840c1bc19d0d429b1a41fd162c48cbc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15674, "upload_time": "2018-03-23T16:52:47", "url": "https://files.pythonhosted.org/packages/dc/9d/08f852323ceb72c957561a01918be3678e237bb7a813dd0687b55e5245c9/dogerpc-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62f24964e67bdadafdc386d6b99a44fa", "sha256": "5c2721148c729105d634e1a9800e3aaad16586d690c5e8d249c2b95adf2a992f" }, "downloads": -1, "filename": "dogerpc-0.1.4.tar.gz", "has_sig": false, "md5_digest": "62f24964e67bdadafdc386d6b99a44fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11542, "upload_time": "2018-03-23T16:52:48", "url": "https://files.pythonhosted.org/packages/88/20/74c2e58d25b6c5e335b57e5ef6209a689e5d034ec3795c5838bd1707f189/dogerpc-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5840c1bc19d0d429b1a41fd162c48cbc", "sha256": "bfc66bfa9b98e14cafc756e2642d1c3feea79731fc945b8f72fe74e5acaf0756" }, "downloads": -1, "filename": "dogerpc-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5840c1bc19d0d429b1a41fd162c48cbc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15674, "upload_time": "2018-03-23T16:52:47", "url": "https://files.pythonhosted.org/packages/dc/9d/08f852323ceb72c957561a01918be3678e237bb7a813dd0687b55e5245c9/dogerpc-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "62f24964e67bdadafdc386d6b99a44fa", "sha256": "5c2721148c729105d634e1a9800e3aaad16586d690c5e8d249c2b95adf2a992f" }, "downloads": -1, "filename": "dogerpc-0.1.4.tar.gz", "has_sig": false, "md5_digest": "62f24964e67bdadafdc386d6b99a44fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11542, "upload_time": "2018-03-23T16:52:48", "url": "https://files.pythonhosted.org/packages/88/20/74c2e58d25b6c5e335b57e5ef6209a689e5d034ec3795c5838bd1707f189/dogerpc-0.1.4.tar.gz" } ] }