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