Добавление пользовательского модуля через 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.
1 ответ
Не знаю, как это сделать в классическом режиме (не знаю, зачем вы его используете), но вот как выполнить задачу в более новом режиме службы 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!