Как отправить функцию на удаленный объект 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>

Мне кажется, что объект функции выбран правильно и отправляется экземпляру сервера на удаленном хосте, но есть некоторая проблема в пространстве имен.

Как я могу решить эту проблему?

Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос