eval()
ausgewertet werden, da dies wiederum die Ausführung beliebiger Anweisungen ermöglicht
rpyc.Service
erbt
on_connect()
und on_disconnect()
erlauben die Initialisierung und Ressourcen-Freigabe bei Erstellung/Entfernung der Dienstinstanz
exposed_
gekennzeichnet
import rpyc import time class EchoService(rpyc.Service): def on_connect(self): pass def on_disconnect(self): pass def exposed_echo(self, somevalue): return somevalue def exposed_long_echo(self, somevalue): time.sleep(30) # simulate a longer calculation... return somevalue
csrpc.core.registration
vorhanden:
def get_service_directory(): """Gibt das Dienst-Verzeichnis zurück""" def get_service(name): """Gibt den Dienst zurück, der unter [name] registriert ist; wirft ServiceDirectoryError, wenn der Schlüssel [name] nicht vorhanden ist""" def register_service(name, service=None): """Registriert den durch die Klasse [service] definierten Dienst unter dem Namen [name]; wirft ServiceDirectoryError im Konfliktfall""" def access_service(name): """Baut eine Verbindung zum entfernt unter [name] registrierten Dienst auf; entspricht Aufruf von register_service(name)""" def deregister_service(name): """Entfernt Dienst/Verbindung aus dem Verzeichnis; wirft ServiceDirectoryError, wenn der Schlüssel [name] nicht vorhanden ist"""
from csrpc.core import registration from csrpc.core.exceptions import ServiceDirectoryError try: sr = registration.access_service('service_registration') except ServiceDirectoryError: sr = registration.get_service('service_registration')
sr.root.register('examples.echo_service', 'csrpc.services.examples.EchoServer')
echo_service = registration.access_service('examples.echo_service')
root
der lokalen Repräsentation vorhanden
result = echo_service.root.echo('hello world')
import rpyc alongecho = rpyc.async(echo_service.root.long_echo) res = alongecho('A really long calculation')