2

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

4

1 回答 1

2

一种方法是迭代模块中的方法并将它们中的每一个注册到register_instance.

例如,使用这个SimpleXMLRPCServer例子作为起点这个 Stackoverflow 答案用于迭代模块中的函数

服务器

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('.')
于 2015-03-08T00:27:38.420 回答