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