Как отправить функцию на удаленный объект Pyro
Я пытаюсь настроить некоторый код с помощью Pyro для обработки функций кода Python на удаленном хосте и получения результатов обратно. После запуска сервера имен я выполнил бы этот код на удаленном хосте (фактически на локальном хосте):
<code>import Pyro4 class Server(object): def evaluate(self, func, args): return func(*args) def main(): server = Server() Pyro4.Daemon.serveSimple( { server: "server" }, ns=True) if __name__ == '__main__': main() </code>
На стороне клиента у меня есть этот код, который является примером поведения, которое я пытаюсь настроить.
<code>import Pyro4 remoteServer = Pyro4.Proxy('PYRONAME:server') def square(x): return x**2 print remoteServer.evaluate(square, 4) </code>
Однако этот код приводит к следующему исключению:
<code>/usr/lib/python2.7/site-packages/Pyro4/core.py:155: UserWarning: HMAC_KEY not set, protocol data may not be secure warnings.warn("HMAC_KEY not set, protocol data may not be secure") Traceback (most recent call last): File "/home/davide/Projects/rempy/example-api-pyro.py", line 7, in <module> print remoteServer.evaluate(square, 4) File "/usr/lib/python2.7/site-packages/Pyro4/core.py", line 149, in __call__ return self.__send(self.__name, args, kwargs) File "/usr/lib/python2.7/site-packages/Pyro4/core.py", line 289, in _pyroInvoke raise data AttributeError: 'module' object has no attribute 'square' </code>
Мне кажется, что объект функции выбран правильно и отправляется экземпляру сервера на удаленном хосте, но есть некоторая проблема в пространстве имен.
Как я могу решить эту проблему?
Спасибо