使用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秒执行一次。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在安卓活动上使用uncaughtException对话框   将代数象棋符号转换为棋盘布局或FEN符号的java算法   来自证书的java访问证书签名   正则表达式解析Java字符串特殊字符错误   java将linearlayout动态添加到Relativelayout中   java我怎样才能在ant中不停顿地“失败”构建?   从Java producer到Mongodb的json主题数据   java Log4J 2 Syslog Appender工作不正常   java在Processing 3中在3D对象上绘制2D文本   java Spring MVC Web服务调度程序   mysql Java持久性查找区分大小写的数据检索   java YAML解析器不带密钥的多个根文件   SpringJavaBean需要通过prototype作用域使用相同的对象   由于某种原因,应用程序运行时不会显示java xml文件   java maven在JFrog artifactory(snapshotrepo)中找不到具有第三方libs的jar文件