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