Python - chamada de procedimento remoto

O sistema Remote Procedure Call (RPC) permite que você chame uma função disponível em um servidor remoto usando a mesma sintaxe que é usada ao chamar uma função em uma biblioteca local. Isso é útil em duas situações.

  • Você pode utilizar o poder de processamento de várias máquinas usando rpc sem alterar o código para fazer a chamada para os programas localizados nos sistemas remotos.
  • Os dados necessários para o processamento estão disponíveis apenas no sistema remoto.

Portanto, em python, podemos tratar uma máquina como servidor e outra como cliente, o que fará uma chamada ao servidor para executar o procedimento remoto. Em nosso exemplo, pegaremos o localhost e o usaremos como servidor e cliente.

Executando um servidor

A linguagem python vem com um servidor embutido que podemos rodar como um servidor local. O script para executar este servidor está localizado na pasta bin da instalação do python e denominado classic.py. Podemos executá-lo no prompt do python e verificar sua execução como um servidor local.

python bin/classic.py

Quando executamos o programa acima, obtemos a seguinte saída -

INFO:SLAVE/18812:server started on [127.0.0.1]:18812

Executando um Cliente

Em seguida, executamos o cliente usando o módulo rpyc para executar uma chamada de procedimento remoto. No exemplo abaixo, executamos a função de impressão no servidor remoto.

import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute("print('Hello from Tutorialspoint')")

Quando executamos o programa acima, obtemos a seguinte saída -

Hello from Tutorialspoint

Avaliação de Expressão por RPC

Usando os exemplos de código acima, podemos usar as funções embutidas do python para execução e avaliação de expressões por meio do rpc.

import rpyc
conn = rpyc.classic.connect("localhost")
conn.execute('import math')
conn.eval('2*math.pi')

Quando executamos o programa acima, obtemos a seguinte saída -

6.283185307179586