2015-03-07 3 views
2

У меня есть система, где код находится на драйвере, обращаясь к удаленной системе. Я использую реализацию SimpleXmlRpcServer xmlrpcserver, и он работает достаточно хорошо. Функции и экземпляры могут быть зарегистрированы, но я не думаю, что все модули могут быть зарегистрированы. В частности, id хотел зарегистрировать модуль os. Возможно ли это с помощью simplexmlrpcserver или есть ли какие-либо другие реализации, которые позволяют это?xmlrpcserver реализация в python, способная регистрировать весь модуль?

ответ

2

Один из подходов - перебрать методы в модуле и зарегистрировать каждый из них с помощью register_instance.

Например, с помощью this SimpleXMLRPCServer example as a starting point и this Stackoverflow 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' 

Client

import xmlrpclib 

proxy = xmlrpclib.ServerProxy('http://localhost:9000') 
print 'os.listdir():', proxy.listdir('.') 
Смежные вопросы