使用asyncio+msgpack的python服务的快速rpc框架
electron-rpc的Python项目详细描述
电子
使用asyncio+MsgPack构建python 3.7+服务的快速rpc框架
安装
$ pip install electron-rpc
它是如何工作的?
创建一个带有一个端点的服务器实例sum()
,该端点输出两个值之和:
fromelectronimportServerapp=Server()@app.endpoint("sum")asyncdefsum(a,b,**kwargs):returnf"Result: {a + b}"app.run()
__ __
___ / /__ _____/ /__________ ____
/ _ \/ / _ \/ ___/ __/ ___/ __ \/ __ \
/ __/ / __/ /__/ /_/ / / /_/ / / / /
\___/_/\___/\___/\__/_/ \____/_/ /_/
⚡ electron build v0.0.4
Listening on 127.0.0.1:9999
Registered Endpoints:
- sum
从客户端调用端点
electron使用msgpack rpc,因此创建一个负载并通过tcp发送它:
importsocketfromelectron.messagesimportRemoteProcedureCallsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.connect(("127.0.0.1",9999))sock.send(RemoteProcedureCall(endpoint="sum",args=[1,2]).encode())data=sock.recv(1024)print(f"Received: \n{data.decode()}")sock.close()
Received:
Result: 3
背景任务
要创建背景任务,请用@app.background(time_in_seconds)
:
@app.background(3)asyncdefsome_background_task():print("Running background task every 3 seconds")
现在任务将每3秒执行一次。