python 中的 xmlrpcserver 实现是否能够注册整个模块?

xmlrpcserver implementation in python capable of registering an entire module?

我有一个系统,其中的代码位于访问远程系统的驱动程序上。我正在使用 xmlrpcserver 的 SimpleXmlRpcServer 实现,它工作得很好。可以注册函数和实例,但我不认为可以注册整个模块。特别是,id 喜欢注册 os 模块。这是 simplexmlrpcserver 的 possibility 还是有任何其他实现允许这样做?

一种方法是遍历模块中的方法并使用 register_instance.

注册每个方法

例如,使用this SimpleXMLRPCServer example as a starting point and this Whosebug answer for iterating over functions in a module:

服务器

from SimpleXMLRPCServer import SimpleXMLRPCServer
import os

server = SimpleXMLRPCServer(('localhost', 9000))

def list_contents(dir_name):
    return os.listdir(dir_name)
for name, val in os.__dict__.items():
    if callable(val):
        print "Registering " +  name
        server.register_function(val, name)

try:
    print 'Use Control-C to exit'
    server.serve_forever()
except KeyboardInterrupt:
    print 'Exiting'

客户端

import xmlrpclib

proxy = xmlrpclib.ServerProxy('http://localhost:9000')
print 'os.listdir():', proxy.listdir('.')