欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

pyspider源码-run.py之xmlrpclib

程序员文章站 2022-03-03 08:54:23
...
try:
        from six.moves import xmlrpc_client
except ImportError:
        import xmlrpclib as xmlrpc_client

RPC的服务

RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

xmlrpclib

是一个将数据定义为xml格式,通过http协议进行远程传输的包

class xmlrpclib.ServerProxy(uri[, transport[, encoding[, verbose[, allow_none[, use_datetime[, context]]]]]])

A ServerProxy
instance is an object that manages communication with a remote XML-RPC server.
一个serverproxy实例,管理远程xml-rpc服务

服务端

import xmlrpclib

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer

#函数
def is_even(n):
    return n % 2 == 0

server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
#注册到客服端
server.register_function(is_even, "is_even")
server.serve_forever()

客户端

#coding:utf-8
import xmlrpclib

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
#服务器

proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
print "3 is even: %s" % str(proxy.is_even(3))
print "100 is even: %s" % str(proxy.is_even(100))