Django的简单现代JSON-RPC和XML-RPC服务器实现
django-modern-rpc的Python项目详细描述
说明
django modern rpc提供了一个简单的解决方案来实现远程过程调用(rpc)服务器,作为django的一部分 项目。它支持所有主要的django和python版本。
项目的主要功能是:
- 简单的pythonic api
- python 2.7、3.3、3.4、3.5和3.6
- django 1.8至2.0
- XML-RPC和JSON-RPC 2.0支持(不支持json-rpc 1.0)
- HTTP基本身份验证支持
- 自定义身份验证支持
- 基于请求的Content-Type头的自动协议检测
- 基于异常的高级错误管理
- 多个入口点,附带特定的方法和协议
- 基于docstrings自动生成的rpc方法文档
- 系统自省方法:
- system.listmethods()
- system.methodSignature()
- system.methodhelp()
- system.multicall()(仅限XML-RPC,使用来自https://mirrors.talideon.com/articles/multicall.html的规范)
快速启动
使用pip在您的环境中安装软件包:
pip install django-modern-rpc
将它添加到django应用程序中,在settings.py:
INSTALLED_APPS = [ ... 'modernrpc', ]
声明一个入口点,一个生成对传入请求的正确rpc响应的视图:
# In myproject/rpc_app/urls.py from django.conf.urls import url from modernrpc.views import RPCEntryPoint urlpatterns = [ url(r'^rpc/', RPCEntryPoint.as_view()), ]
使用@rpc_method在django modern rpc注册表中注册全局函数:
# In myproject/rpc_app/rpc_methods.py from modernrpc.core import rpc_method @rpc_method def add(a, b): return a + b
声明包含rpc方法的python模块列表,在settings.py:
MODERNRPC_METHODS_MODULES = [ 'rpc_app.rpc_methods' ]
现在,您可以从客户机调用方法add:
>>>fromxmlrpc.clientimportServerProxy>>>client=ServerProxy('http://localhost:8000/rpc/')>>>print(client.add(2,3))5
有关详细信息,请阅读the full documentation。