1. XML-RPC
RPC (Remote Procedure Call) 远程过程调用, 提供一种“远程接口”来供外部系统调用, 常常用于不同平台,不同架构的系统之间的相互调用, 减少代码的冗余, 便于管理。
XML-RPC 是通过HTTP传输协议,XML作为传送信息的编码格式, 尽可能保持简单, 但同时能够传送,处理, 返回复杂的数据结构。因为是基于HTTP和XML, 所以兼容性比较好, 能够跨域不同的操作系统, 不同的编程语言, 但同时速度就会慢下来。
XML-RPC 一般有分为Server 和Client 端, Client 向Server发送一个请求体为XML的HTTP POST请求, 被调用的方法在Server端将执行结果以XML格式返回。
Client --> xmlrpclib, 这个模块是用来调用注册在XML-RPC服务端的函数
Server --> SimpleXMLRPCServer, 这个模块用来构造一个最基本的XML-RPC服务器框架
2. XML-RPC 简单Python实现
Server 端:由于SimpleXMLRPCServer是单线程的,所以当多个客户端同时请求的时候, 就需要用到多线程。
#/usr/bin/env python3
import os
from SimpleXMLRPCServer import SimpleXMLRPCServer
from SocketServer import ThreadingMixIn
def pwd():
return os.getcwd()
def ls(directory=None):
if directory is None:
directory = pwd()
try:
return os.listdir(directory)
except OSError as e:
return e
def cd(directory):
try:
os.chdir(directory)
except OSError as e:
return e
return 'change current working directory to: %s' % (directory)
def mkdir(directory):
try:
os.mkdir(directory)
except OSError as e:
return e
else:
return 'successfully create directory: %s' % directory
def cp(src, dest)