Python 中文开发手册

SimpleXMLRPCServer (Internet) - Python 中文开发手册

注意

该SimpleXMLRPCServer模块已被合并到Python 3中。当将源代码转换为Python 3时xmlrpc.server,2to3工具将自动适应导入。

2.2版本中的新功能。

源代码: Lib / SimpleXMLRPCServer.py

该SimpleXMLRPCServer模块为使用Python编写的XML-RPC服务器提供了一个基本的服务器框架。服务器可以独立使用SimpleXMLRPCServer,也可以嵌入CGI环境中使用CGIXMLRPCRequestHandler。

class SimpleXMLRPCServer.SimpleXMLRPCServer(addr[, requestHandler[, logRequests[, allow_none[, encoding[, bind_and_activate]]]])

创建一个新的服务器实例。该类提供了可以由XML-RPC协议调用的函数注册方法。所述requestHandler参数应至少为请求处理程序实例的工厂; 它默认为SimpleXMLRPCRequestHandler。该地址和requestHandler参数传递给SocketServer.TCPServer构造函数。如果logRequests为true(缺省值),则会记录请求; 将此参数设置为false将关闭日志记录。该ALLOW_NONE和编码参数传递到xmlrpclib并控制从服务器返回的XML-RPC响应。该bind_and_activate参数控制是否server_bind()和server_activate()由构造函数立即调用; 它默认为true。将其设置为false允许代码在绑定地址之前操作allow_reuse_address类变量。

在版本2.5中进行了更改:添加了allow_none和编码参数。

在版本2.6中更改:添加了bind_and_activate参数。

class SimpleXMLRPCServer.CGIXMLRPCRequestHandler([allow_none[, encoding]])

创建一个新的实例来处理CGI环境中的XML-RPC请求。该ALLOW_NONE和编码参数传递到xmlrpclib并控制从服务器返回的XML-RPC响应。

2.3版本的新功能。

在版本2.5中进行了更改:添加了allow_none和编码参数。

class SimpleXMLRPCServer.SimpleXMLRPCRequestHandler

创建一个新的请求处理器实例。此请求处理程序支持POST请求并修改日志记录,以便遵守SimpleXMLRPCServer构造函数参数的logRequests参数。

1. SimpleXMLRPCServer对象

在SimpleXMLRPCServer基于类SocketServer.TCPServer,并提供创建简单的手段,独立的XML-RPC服务器。

SimpleXMLRPCServer.register_function(function[, name])

注册一个可以响应XML-RPC请求的函数。如果给出名称,它将是与函数关联的方法名称,否则function.__name__将被使用。名称可以是普通字符串或Unicode字符串,也可以包含Python标识符中不合法的字符,包括句点字符。

SimpleXMLRPCServer.register_instance(instance[, allow_dotted_names])

注册一个用来暴露尚未使用的方法名称的对象register_function()。如果实例包含_dispatch()方法,则使用请求的方法名称和请求中的参数调用它。它的API是def _dispatch(self, method, params)(注意params不代表可变参数列表)。如果它调用一个底层函数来执行它的任务,那么这个函数被称为func(*params)扩展参数列表。_dispatch()作为结果,返回值将返回给客户端。如果实例没有_dispatch()方法,则会搜索与请求的方法的名称匹配的属性。

如果可选的allow_dotted_names参数为true并且该实例没有_dispatch()方法,那么如果请求的方法名称包含句点,则会单独搜索方法名称的每个组件,结果会执行简单的分层搜索。然后使用请求中的参数调用此搜索中找到的值,并将返回值传回客户端。

警告

启用allow_dotted_names选项允许入侵者访问您的模块的全局变量,并可能允许入侵者在您的机器上执行任意代码。只能在安全的封闭网络上使用此选项。

在版本2.3.5中更改:2.4.1 allow_dotted_names被添加到插入安全漏洞; 以前的版本是不安全的。

SimpleXMLRPCServer.register_introspection_functions()

注册XML-RPC内省功能system.listMethods,system.methodHelp和system.methodSignature。

2.3版本的新功能。

SimpleXMLRPCServer.register_multicall_functions()

注册XML-RPC多重函数system.multicall。

SimpleXMLRPCRequestHandler.rpc_paths

一个属性值,必须是列出用于接收XML-RPC请求的URL的有效路径部分的元组。发布到其他路径的请求将导致404“无此页”HTTP错误。如果此元组为空,则所有路径都将被视为有效。默认值是('/', '/RPC2')。

2.5版本中的新功能。

SimpleXMLRPCRequestHandler.encode_threshold

如果此属性不是,则在客户端允许的情况下,None将使用gzip传输编码对大于此值的响应进行编码。默认值1400大致对应于单个TCP数据包。

2.7版本的新功能。

1.1。SimpleXMLRPCServer示例

服务器代码:

from SimpleXMLRPCServer import SimpleXMLRPCServer

from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler

# Restrict to a particular path.

class RequestHandler(SimpleXMLRPCRequestHandler):

rpc_paths = ('/RPC2',)

# Create server

server = SimpleXMLRPCServer(("localhost", 8000),

requestHandler=RequestHandler)

server.register_introspection_functions()

# Register pow() function; this will use the value of

# pow.__name__ as the name, which is just 'pow'.

server.register_function(pow)

# Register a function under a different name

def adder_function(x,y):

return x + y

server.register_function(adder_function, 'add')

# Register an instance; all the methods of the instance are

# published as XML-RPC methods (in this case, just 'div').

class MyFuncs:

def div(self, x, y):

return x // y

server.register_instance(MyFuncs())

# Run the server's main loop

server.serve_forever()

以下客户端代码将调用上述服务器提供的方法:

import xmlrpclib

s = xmlrpclib.ServerProxy('http://localhost:8000')

print s.pow(2,3) # Returns 2**3 = 8

print s.add(2,3) # Returns 5

print s.div(5,2) # Returns 5//2 = 2

# Print list of available methods

print s.system.listMethods()

以下SimpleXMLRPCServer示例包含在模块中Lib/SimpleXMLRPCServer.py:

server = SimpleXMLRPCServer(("localhost", 8000))

server.register_function(pow)

server.register_function(lambda x,y: x+y, 'add')

server.register_multicall_functions()

server.serve_forever()

这个演示服务器可以从命令行运行如下:

python -m SimpleXMLRPCServer

与上述服务器交谈的示例客户端代码包含在以下内容中Lib/xmlrpclib.py:

server = ServerProxy("http://localhost:8000")

print server

multi = MultiCall(server)

multi.pow(2, 9)

multi.add(5, 1)

multi.add(24, 11)

try:

for response in multi():

print response

except Error, v:

print "ERROR", v

并且可以使用以下命令直接调用客户端:

python -m xmlrpclib

2. CGIXMLRPCRequestHandler

该CGIXMLRPCRequestHandlerclass可用于处理发送到Python的CGI脚本XML-RPC请求。

CGIXMLRPCRequestHandler.register_function(function[, name])

注册一个可以响应XML-RPC请求的函数。如果给出名称,它将是与函数关联的方法名称,否则将使用 _function .__ name__ 。_name可以是普通字符串或Unicode字符串,也可以包含Python标识符中不合法的字符,包括句点字符。

CGIXMLRPCRequestHandler.register_instance(instance)

注册一个用来暴露尚未使用的方法名称的对象register_function()。如果实例包含_dispatch()方法,则使用请求的方法名称和请求中的参数调用该方法; 返回值作为结果返回给客户端。如果实例没有_dispatch()方法,则会搜索与请求方法的名称匹配的属性; 如果请求的方法名称包含句点,则会单独搜索方法名称的每个组件,从而执行简单的分层搜索。然后使用请求中的参数调用此搜索中找到的值,并将返回值传回客户端。

CGIXMLRPCRequestHandler.register_introspection_functions()

注册XML-RPC内省功能system.listMethods,system.methodHelp和system.methodSignature。

CGIXMLRPCRequestHandler.register_multicall_functions()

注册XML-RPC multicall函数system.multicall。

CGIXMLRPCRequestHandler.handle_request([request_text = None])

处理XML-RPC请求。如果给出request_text,它应该是由HTTP服务器提供的POST数据,否则将使用stdin的内容。

例:

class MyFuncs:

def div(self, x, y): return x // y

handler = CGIXMLRPCRequestHandler()

handler.register_function(pow)

handler.register_function(lambda x,y: x+y, 'add')

handler.register_introspection_functions()

handler.register_instance(MyFuncs())

handler.handle_request()

SimpleXMLRPC_SimpleXMLRPCServer (Internet) – Python 中文开发手册 - Break易站相关推荐

  1. pprint python_pprint (Data Types) – Python 中文开发手册 - Break易站

    Python 中文开发手册 pprint (Data Types) - Python 中文开发手册 源代码: Lib / pprint.py 该pprint模块提供了以可以用作解释器输入的形式&quo ...

  2. python stringio_StringIO (String) – Python 中文开发手册 - Break易站

    Python 中文开发手册 StringIO (String) - Python 中文开发手册 这个模块实现了一个文件类,StringIO它读取和写入字符串缓冲区(也称为内存文件).请参阅文件对象的操 ...

  3. linebreak_operator-linebreak (Rules) – Eslint 中文开发手册 - Break易站

    Eslint 中文开发手册 operator-linebreak (Rules) - Eslint 中文开发手册 在命令行上的--fix选项可以自动修复一些被这条规则反映的问题. 当一条语句太长而不适 ...

  4. golang日志服务器_日志系统 | log/syslog (log) – Go 中文开发手册 - Break易站

    Go 中文开发手册 日志系统 | log/syslog (log) - Go 中文开发手册 import "log/syslog"概述索引示例 概述 软件包系统日志为系统日志服务提 ...

  5. cbrt c语音_cbrt (Numerics) – C 中文开发手册 - Break易站

    C 语言中文开发手册 cbrt (Numerics) - C 中文开发手册 在头文件中定义 ​ ​ float cbrtf( float arg ); (1) (since C99) double c ...

  6. python struct pack string_struct (String) – Python 中文开发手册

    Python 中文开发手册 struct (String) - Python 中文开发手册 该模块执行Python值与C结构之间的转换,表示为Python字符串.这可用于处理存储在文件或网络连接中的二 ...

  7. python中文开发文档_pydoc (Development Tools) – Python 中文开发手册

    Python 中文开发手册 pydoc (Development Tools) - Python 中文开发手册 2.1版本中的新功能. 源代码: Lib / pydoc.py pydoc模块自动从Py ...

  8. idle python_IDLE (Tk) - Python 中文开发手册 - 开发者手册 - 云+社区 - 腾讯云

    IDLE是Python的集成开发和学习环境. IDLE具有以下功能: 使用tkinterGUI工具包编码为100%纯Python 跨平台:在Windows,Unix和Mac OS X上大体相同 Pyt ...

  9. input type=text 无法使用.html(),input type=”text” (Elements) – HTML 中文开发手册

    HTML 中文开发手册 input type="text" (Elements) - HTML 中文开发手册 "text"类型的元素 创建通用的单行文本字段. ...

最新文章

  1. Faiss教程:索引(2)
  2. 《C++ Primer Plus》学习笔记 2.1.1 main()函数
  3. [Issue Fixed]-GCC编译[-Werror,-Wformat]
  4. ICCV 2021|面向城市场景理解的大规模3D点云挑战赛
  5. 为员工长工资。从最低工资调起每人长10%,请计算长工资的人数和长工资后的工资总额,并输出输出长工资人数及工资总额。
  6. 使用腾讯开发平台获取QQ用户数据资料
  7. Oracle数据库性能问题分析的一种常规思路
  8. Vue 高德地图使用总结
  9. 关于CSS HACK
  10. ECC椭圆曲线加密算法原理 | 比特币加密算法
  11. 梳理 | 交叉熵、相对熵(KL散度)、JS散度和Wasserstein距离(推土机距离)
  12. RISC-V嵌入式开发入门篇2:RISC-V汇编语言程序设计(上)
  13. 用canvas实现一个简易的涂鸦画板
  14. 《墨菲定律》读书笔记之第一章——成功学的秘密
  15. 第十六周项目3电子词典
  16. 医疗器械安全知识小科普
  17. Dynamics 365 新建组织时一直提示识别不到Reporting Extensions
  18. 三针重叠问题算法整理
  19. 利用浏览器开发者工具下载歌曲
  20. 构建“未来级”企业,如何做对这道必答题

热门文章

  1. 春运大幕开启 福建铁路预计发送旅客1575万人次
  2. google全屏快捷方式 关键字 kiosk
  3. 解决安卓软件提示“解析软件包时出现问题”
  4. 关于腾讯应用宝上架的应用版本回退的问题
  5. 红孩儿编辑器的模块设计6
  6. syzlang语法编写案例学习 —— Looking for Remote Code Execution bugs in the Linux kernel
  7. html 预选单选按钮,关于html:单选按钮的预选
  8. 小程序商品数据对象累加加入购物车缓存导致的数组嵌套在上一层数组中的问题
  9. Kafka序列化器,分区器,拦截器,消息累加器
  10. 学会使用这些常见的网络诊断工具,助力你的网络编程之路