| @ -1,2 +1,108 @@ | |||||
| GreenRPC | GreenRPC | ||||
| ======== | ======== | ||||
| TCP & HTTP RPC Server written with [msgpack](http://msgpack.org/) and | |||||
| [gevent](http://www.gevent.org/) | |||||
| ## Install | |||||
| ### pip | |||||
| ```bash | |||||
| pip install greenrpc | |||||
| ``` | |||||
| ### git | |||||
| ```bash | |||||
| git clone git://github.com/brettlangdon/greenrpc.git | |||||
| cd ./greenrpc | |||||
| python setup.py install | |||||
| ``` | |||||
| ## Usage | |||||
| ### server | |||||
| ```bash | |||||
| $ greenrpc-server -h | |||||
| usage: greenrpc-server [-h] [--bind BIND] [--spawn SPAWN] [--http] <module> [<module> ...] | |||||
| Start a new GreenRPC TCP Server | |||||
| positional arguments: | |||||
| <module> Python module to expose for the RPC Server | |||||
| optional arguments: | |||||
| -h, --help show this help message and exit | |||||
| --bind BIND <address>:<port> to bind the server to (default: 127.0.0.1:3434) | |||||
| --spawn SPAWN number of greenlets to spawn (default: 4) | |||||
| --http whether to start an http server instead of tcp (default: False) | |||||
| ``` | |||||
| Expose the python module [time](https://docs.python.org/2/library/time.html) as | |||||
| an RPC server | |||||
| ``` | |||||
| $ greenrpc-server time | |||||
| ``` | |||||
| ### cli client | |||||
| ```bash | |||||
| $ greenrpc-client -h | |||||
| usage: greenrpc-client [-h] [--connect CONNECT] [--debug] [--http] <method> [<arg> [<arg> ...]] | |||||
| Start a new GreenRPC TCP Server | |||||
| positional arguments: | |||||
| <method> The remote method to call | |||||
| <arg> Arguments to send for the remote method call | |||||
| optional arguments: | |||||
| -h, --help show this help message and exit | |||||
| --connect CONNECT <address>:<port> of the server to connect to(default: 127.0.0.1:3434) | |||||
| --debug whether or not to show the full result | |||||
| --http whether the server is http or tcp | |||||
| ``` | |||||
| ``` | |||||
| $ greenrpc-client time | |||||
| 1414368752.71 | |||||
| $ greenrpc-client --debug time | |||||
| {'results': 1414368766.407974, 'run_time': 0.0059604644775390625, 'id': 1} | |||||
| ``` | |||||
| ### python client | |||||
| ```python | |||||
| from greenrpc.client import TCPClient | |||||
| client = TCPClient() | |||||
| print client.time() | |||||
| # 1414368818.587777 | |||||
| print client.call("time") | |||||
| # 1414368830.217749 | |||||
| print client.call("time", debug=True) | |||||
| # {'results': 1414368849.379209, 'run_time': 0.008106231689453125, 'id': 3} | |||||
| ``` | |||||
| ## License | |||||
| ``` | |||||
| The MIT License (MIT) | |||||
| Copyright (c) 2014 Brett Langdon | |||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||||
| of this software and associated documentation files (the "Software"), to deal | |||||
| in the Software without restriction, including without limitation the rights | |||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||||
| copies of the Software, and to permit persons to whom the Software is | |||||
| furnished to do so, subject to the following conditions: | |||||
| The above copyright notice and this permission notice shall be included in all | |||||
| copies or substantial portions of the Software. | |||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||||
| SOFTWARE. | |||||
| ``` | |||||