a rpc framework for message-pack rpc.
Project description
pymprpc ===============================
version: 0.0.3
status: dev
author: hsz
email: hsz1273327@gmail.com
Desc
a rpc framework for message-pack rpc.
keywords:rpc,server,tcp
Feature
api seems to stdlib xmlrpc
easy to use, easy to debug
support stream response
Example
server
import platform
from pymprpc.server import SimpleMprpcServer
if platform.system() == "Windows":
try:
import aio_windows_patch as asyncio
except:
import warnings
warnings.warn(
"you should install aio_windows_patch to support windows",
RuntimeWarning,
stacklevel=3)
import asyncio
else:
import asyncio
try:
import uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
except ImportError:
pass
class MyMPRPCServer(SimpleMprpcServer):
pass
with MyMPRPCServer(("127.0.0.1", 5000), debug=True) as server:
server.register_introspection_functions()
@server.register_function()
def testfunc(a, b):
'''有help'''
return a + b
@server.register_function()
async def testcoro(a, b):
await asyncio.sleep(0.1)
return a + b
@server.register_function()
async def testcorogen(a, b):
for i in range(10):
await asyncio.sleep(0.1)
yield i + a + b
class TestClass:
def testclassmethod(self, a, b):
return a + b
async def testclasscoro(self, a, b):
await asyncio.sleep(0.1)
return a + b
async def testclasscorogen(self, a, b):
for i in range(10):
await asyncio.sleep(0.1)
yield i + a + b
t = TestClass()
server.register_instance(t)
server.run_forever()
sync client
import time
from pymprpc.client import RPC
with RPC(addr="tcp://admin:admin@127.0.0.1:5000",
debug=True) as rpc:
print(rpc.system.listMethods())
print(rpc.system.methodSignature("testclassmethod"))
print(rpc.system.methodHelp("testfunc"))
print(rpc.system.lenConnections())
print(rpc.system.lenUndoneTasks())
print(rpc.testclassmethod(1, 2))
print(rpc.testclasscoro(2, 3))
print(rpc.testcoro(5, 6))
print(rpc.testfunc(5, 4))
agen = rpc.testcorogen(1, 2)
for i in agen:
print(i)
time.sleep(200)
print("wait done")
# rpc.close()
print(rpc.testfunc())
async client
import asyncio
from pymprpc.client import AsyncRPC
async def main(loop):
async with AsyncRPC(
addr="tcp://admin:admin@127.0.0.1:5000",
loop=loop,
debug=True) as rpc:
print(await rpc.system.listMethods())
print(await rpc.system.methodSignature("testclassmethod"))
print(await rpc.system.methodHelp("testfunc"))
print(await rpc.system.lenConnections())
print(await rpc.system.lenUndoneTasks())
print(await rpc.testclassmethod(1, 2))
print(await rpc.testclasscoro(2, 3))
print(await rpc.testcoro(5, 6))
print(await rpc.testfunc(5, 4))
# await asyncio.sleep(200)
print("wait done")
print(await rpc.testfunc())
print("end")
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(main(loop))
except Exception as e:
raise e
Install
python -m pip install pymprpc
Documentation
TODO
Load balancing broker
Limitations
sync client do not support heartbeat and timeout
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pymprpc-0.0.3.tar.gz
(22.4 kB
view details)
Built Distribution
pymprpc-0.0.3-py3-none-any.whl
(33.3 kB
view details)
File details
Details for the file pymprpc-0.0.3.tar.gz
.
File metadata
- Download URL: pymprpc-0.0.3.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00eac8096b21d7b3afa20e986feb5912e5062d2ff5a2b77292493723eebe8296 |
|
MD5 | 6beb4103764d353a19846431137eb632 |
|
BLAKE2b-256 | 0eddcd336501b20a6dd011967c2a88e6993542e66b49013bb05b606fd0f6f7c1 |
File details
Details for the file pymprpc-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: pymprpc-0.0.3-py3-none-any.whl
- Upload date:
- Size: 33.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ae941391d1ae87be04f1a9b010d9c02284f53e48e3543d0b58df4d639e1de84 |
|
MD5 | 915eb1cbb8ef594ee9f3d777895b2229 |
|
BLAKE2b-256 | af444c4fd709abef6038b48e63c622f973ba374328959e7aa6562ee1f4a6a125 |