2

リモートシステムにアクセスするドライバーにコードが配置されているシステムがあります。xmlrpcserver の SimpleXmlRpcServer 実装を使用していますが、非常にうまく機能します。関数とインスタンスは登録できますが、モジュール全体を登録できるとは思いません。特に、id は os モジュールを登録するのが好きです。これは simplexmlrpcserver の可能性ですか、それともこれを可能にする他の実装はありますか?

4

1 に答える 1

2

1 つの方法は、モジュール内のメソッドを繰り返し処理し、それぞれを .xml に登録すること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 に答える