2016-02-16 7 views
1

Я пытаюсь добавить новый модуль к соединению.Добавление настраиваемого модуля через RPyC

У меня есть следующие файлы: main.py UpdateDB.py

В UpdateDB:

def UpdateDB(): 
    ... 

В main.py:

import UpdateDB 
import rpyc 

conn = rpyc.classic.connect(...) 
rpyc.utils.classic.upload_package(conn, UpdateDB) 
conn.modules.UpdateDB.UpdateDB() 

И я могу понять, как для вызова функции UpdateDB(). я получаю:

AttributeArror: 'module' object has no attribute 'UpdateDB' 

Возможно, что я пытаюсь сделать это неправильно. Поэтому позвольте мне объяснить, что я пытаюсь сделать: Я хочу создать соединение с сервером и запустить на нем функцию из файла UpdateDB.py.

ответ

0

Не знаете, как это сделать в классическом режиме (не уверен, почему вы его используете), но вот как выполнить задачу в новом сервисном режиме RPyC.

Сценарий побежал как сервер:

import rpyc 
from rpyc.utils.server import ThreadedServer 


class MyService(rpyc.Service): 
    def exposed_printSomething(self, a): 
     print a 
     print "printed on server!" 
     return 'printed on client!' 

if __name__ == '__main__': 
    server = ThreadedServer(MyService, port=18812) 
    server.start() 

Сценарий побежал, как Клиент:

import rpyc 

if __name__ == '__main__': 
    conn = rpyc.connect("127.0.0.1", port=18812) 
    print conn.root.printSomething("passed to server!") 

Результат на сервере:

passed to server! 
printed on server! 

Результат на клиенте:

printed on client!