Python - zdalne wywołanie procedury

System zdalnego wywoływania procedur (RPC) umożliwia wywołanie funkcji dostępnej na serwerze zdalnym przy użyciu tej samej składni, która jest używana podczas wywoływania funkcji w bibliotece lokalnej. Jest to przydatne w dwóch sytuacjach.

  • Możesz wykorzystać moc obliczeniową wielu maszyn za pomocą RPC bez zmiany kodu do wykonywania wywołań programów znajdujących się w systemach zdalnych.
  • Dane potrzebne do przetwarzania są dostępne tylko w systemie zdalnym.

Zatem w Pythonie możemy traktować jedną maszynę jako serwer, a drugą jako klienta, który wykona wywołanie serwera w celu uruchomienia procedury zdalnej. W naszym przykładzie weźmiemy hosta lokalnego i użyjemy go zarówno jako serwera, jak i klienta.

Uruchamianie serwera

Język Python ma wbudowany serwer, który możemy uruchomić jako serwer lokalny. Skrypt do uruchomienia tego serwera znajduje się w folderze bin instalacji Pythona i nosi nazwę classic.py. Możemy go uruchomić w zachęcie Pythona i sprawdzić, czy działa jako serwer lokalny.

python bin/classic.py

Po uruchomieniu powyższego programu otrzymujemy następujące dane wyjściowe -

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

Prowadzenie klienta

Następnie uruchamiamy klienta przy użyciu modułu rpyc w celu wykonania zdalnego wywołania procedury. W poniższym przykładzie wykonujemy funkcję drukowania na zdalnym serwerze.

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

Po uruchomieniu powyższego programu otrzymujemy następujące dane wyjściowe -

Hello from Tutorialspoint

Ocena wyrażenia za pomocą RPC

Korzystając z powyższych przykładów kodu, możemy użyć wbudowanych funkcji Pythona do wykonywania i oceny wyrażeń za pomocą rpc.

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

Po uruchomieniu powyższego programu otrzymujemy następujące dane wyjściowe -

6.283185307179586