Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import rpyc, sys, threading, time, socket, random
- from rpyc.utils.server import ThreadedServer
- from rpyc.utils.helpers import classpartial
- from threading import Lock
- import os, inspect
- currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
- parentdir = os.path.dirname(currentdir)
- sys.path.insert(0,parentdir)
- from dag import DAG
- import logging
- import copy
- RPYC_CFG = {"allow_all_attrs": True, "allow_pickle": True}
- logging.basicConfig(
- format='%(asctime)s %(levelname)-8s %(message)s',
- level=logging.DEBUG, filename="log.txt",
- datefmt='%Y-%m-%d %H:%M:%S')
- class netAddr:
- def __init__(self, host, mport):
- self.host = host
- self.mport = mport
- class NodeManagerService(rpyc.Service):
- def __init__(self, node):
- self.node = node
- def on_connect(self, conn):
- self.node.manager = conn
- #don't work either:
- #conn.root.foo("bar0")
- #self.node.manager.root.foo("bar1")
- class Node:
- def __init__(self, addr):
- self.manager_thread = ThreadedServer(classpartial(NodeManagerService, self), hostname=addr.host, port=addr.mport, protocol_config=RPYC_CFG)
- threading.Thread(target=self.manager_thread.start).start()
- class ManagerService(rpyc.Service):
- def exposed_foo(self, foo):
- logging.debug("manager got " + str(foo) + "from" + str(self.addr))
- return
- class Manager:
- def __init__(self, addr):
- self.node = rpyc.connect(addr.host, addr.mport, service = ManagerService, config=RPYC_CFG)
- if __name__ == "__main__":
- addr = netAddr("localhost", 10000)
- n = Node(addr)
- m = Manager(addr)
- time.sleep(0.1) #give the node and manager some time to get acquainted
- n.manager.root.foo("bar2")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement