一个小型的、模块化的、与传输和协议无关的rpc库,除其他外,它支持json-rpc和zmq。

tinyrpc的Python项目详细描述


https://readthedocs.org/projects/tinyrpc/badge/?version=latesthttps://travis-ci.org/mbr/tinyrpc.svg?branch=masterhttps://badge.fury.io/py/tinyrpc.svg

Tinyrpc已经过修订。

当前版本只支持python3。 如果需要python2支持,请查看0.9.x版本。 当python2退役时,python2的支持将完全消失, 2020年的某个时候。

动机

截至本文撰写之时(2013年1月),已经有几个jsonrpc库出来了 在PyPI上,大多数人处理一个特定的用例(例如json via 使用twisted或tcp套接字的wsgi)。

但是,没有一个库可以方便地重用jsonrpc解析位 并替换不同的传输(即从json经由TCP到 使用WebSockets0mq实现。

最后,所有这些库都有自己的调度接口和 处理jsonrpc的自定义实现。今天(2019年3月)的情况没有改变。

tinyrpc旨在通过将问题划分为干净的 可互换部件,便于添加新的传输方法,rpc 协议或调度员。

示例:

要创建接收和处理jsonrpc请求的服务器进程,请执行以下操作:

importgeventimportgevent.pywsgiimportgevent.queuefromtinyrpc.protocols.jsonrpcimportJSONRPCProtocolfromtinyrpc.transports.wsgiimportWsgiServerTransportfromtinyrpc.server.geventimportRPCServerGreenletsfromtinyrpc.dispatchimportRPCDispatcherdispatcher=RPCDispatcher()transport=WsgiServerTransport(queue_class=gevent.queue.Queue)# start wsgi server as a background-greenletwsgi_server=gevent.pywsgi.WSGIServer(('127.0.0.1',5000),transport.handle)gevent.spawn(wsgi_server.serve_forever)rpc_server=RPCServerGreenlets(transport,JSONRPCProtocol(),dispatcher)@dispatcher.publicdefreverse_string(s):returns[::-1]# in the main greenlet, run our rpc_serverrpc_server.serve_forever()

相应的客户端代码如下:

fromtinyrpc.protocols.jsonrpcimportJSONRPCProtocolfromtinyrpc.transports.httpimportHttpPostClientTransportfromtinyrpcimportRPCClientrpc_client=RPCClient(JSONRPCProtocol(),HttpPostClientTransport('http://127.0.0.1:5000/'))remote_server=rpc_client.get_proxy()# call a method called 'reverse_string' with a single string argumentresult=remote_server.reverse_string('Hello, World!')print("Server answered:",result)

文档

您很快就会发现tinyrpc比core有更多的文档和测试 代码,因此得名。参见文档 <;https://tinyrpc.readthedocs.org>;了解更多详细信息,特别是 结构部分以获得鸟瞰图。

安装

pip install tinyrpc

将安装具有默认依赖项的tinyrpc

可选依赖项

根据要使用附加依赖项的协议和传输 是必需的。您可以通过指定 附加到基本安装命令。

pip install tinyrpc[httpclient, wsgi]

将安装带有httpclient和wsgi传输依赖项的tinyrpc

可用的附加功能有:

OptionNeeded to use objects of class
geventoptional in RPCClient, required by RPCServerGreenlets
httpclientHttpPostClientTransport, HttpWebSocketClientTransport
jsonextoptional in JSONRPCProtocol
websocketWSServerTransport
wsgiWsgiServerTransport
zmqZmqServerTransport, ZmqClientTransport

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

推荐PyPI第三方库


热门话题
构造函数如何在Java中使用foreach循环构造LinkedList?   通过jsp发送电子邮件时出现java错误(SMTP EXIM)   EDI流到Java对象转换中的edifact异常   surefireplugin 2.22.2的java Maven构建   在Java中初始化变量一次(从文件中读取并存储在ArrayList/HashMap中)   java是不可修改列表线程安全的吗?   数组无法解析“java.lang.ArrayStoreException”   java Dynamic/Onspot JTextfield到JLabel   java在JavaFXTextArea中显示来自XSLT转换的XML   Java8流通过比较两个列表进行过滤   java在多个EC2实例上更新日志级别   未拾取java IntelliJ maven项目生成的源代码(仅部分)   eclipse在Java8中用函数抽象try/catch   JavaSwing:获取位于前面或焦点中的窗口   java监控Kafka消费者延迟并生成警报   java如何检查一个数字是否超过100,并返回多少?   算法:有用于阻止非英语单词的Java函数吗?