def ensure_server_running( host, port, timeout=5, verbose=False, cleanup_new=True ) -> Optional[subprocess.Popen]: """Ensure that a server daemon is running, or start one.""" uri = f"PYRO:{core.DAEMON_NAME}@{host}:{port}" remote_daemon = api.Proxy(uri) try: remote_daemon.ping() logger.debug("Found existing server:\n{}", remote_daemon.info()) except errors.CommunicationError: logger.debug("No server found, creating new mmcore server") proc = new_server_process(host, port, verbose=verbose) if cleanup_new: atexit.register(proc.kill) @atexit.register def _try_unload(): try: proxy = api.Proxy(f"PYRO:{server.CORE_NAME}@{host}:{port}") proxy.unloadAllDevices() except errors.CommunicationError: pass return proc return None
def get_edges( self, node_key: NodeKey, verb: str = None, direction: Optional[Direction] = None, limit: int = 100, ) -> List[dict]: with pyro.Proxy(self.url) as proxy: edges = proxy.get_edges( node_key=node_key, verb=verb, direction=direction, limit=limit ) return edges
def get_neighbors( self, node_key: NodeKey, verb: str = None, direction: Optional[Direction] = None, label: str = None, offset: int = 0, limit: int = 10, ) -> dict: with pyro.Proxy(self.url) as proxy: neighbor_response = proxy.get_neighbors( node_key=node_key, verb=verb, direction=direction, label=label, offset=offset, limit=limit, ) return neighbor_response
def search( self, q: str = None, labels: istr = None, keys: istr = None, traversal: Traversal = None, limit: int = 100, offset: int = 0, ) -> dict: with pyro.Proxy(self.url) as proxy: response = proxy.search( q=q, labels=labels, keys=keys, traversal=traversal, limit=limit, offset=offset, ) return response
def new_server_process( host: str, port: int, timeout=5, verbose=False ) -> subprocess.Popen: """Create a new daemon process""" cmd = [sys.executable, "-m", server.__name__, "-p", str(port), "--host", host] if verbose: cmd.append("--verbose") proc = subprocess.Popen(cmd) uri = f"PYRO:{core.DAEMON_NAME}@{host}:{port}" remote_daemon = api.Proxy(uri) while timeout > 0: try: remote_daemon.ping() return proc except Exception: timeout -= 0.1 time.sleep(0.1) raise TimeoutError(f"Timeout connecting to server {uri}")
def remove_node(self, key: str) -> dict: with pyro.Proxy(self.url) as proxy: node = proxy.remove_node(key) return node
def save_node(self, node) -> dict: with pyro.Proxy(self.url) as proxy: node = proxy.save_node(node) return node
def get_node(self, key: str) -> Optional[dict]: with pyro.Proxy(self.url) as proxy: node = proxy.get_node(key) return node
def get_user(self, token: str) -> Optional[User]: with pyro.Proxy(self.url) as proxy: return proxy.get_user(token)
def save_edge(self, edge: Union[dict, Edge]) -> dict: with pyro.Proxy(self.url) as proxy: edge = proxy.save_edge(edge) return edge
def clear(self) -> bool: with pyro.Proxy(self.url) as proxy: return proxy.clear()
def reindex(self): with pyro.Proxy(self.url) as proxy: return proxy.reindex()
def reload(self) -> bool: with pyro.Proxy(self.url) as proxy: return proxy.reload()
def transact(self): with pyro.Proxy(self.url) as proxy: return proxy.transact()
def parse( self, text: str, labels: istr = None, pipeline: str = "default" ) -> dict: with pyro.Proxy(self.url) as proxy: doc = proxy.parse(text, labels=labels, pipeline=pipeline) return doc
def info(self) -> dict: with pyro.Proxy(self.url) as proxy: return proxy.info()
def count_nodes(self, term=None, labels: istr = None) -> int: with pyro.Proxy(self.url) as proxy: return proxy.count_nodes(term, labels)
def get_schema(self) -> dict: with pyro.Proxy(self.url) as proxy: return proxy.get_schema()
def connect(self, start, verb: str, end, data: dict = None): with pyro.Proxy(self.url) as proxy: edge = proxy.connect(start, verb, end, data) return edge
def authenticate(self, username: str, password: str) -> str: with pyro.Proxy(self.url) as proxy: return proxy.authenticate(username, password)
import Pyro5.api as p5 ns = p5.locate_ns() uri = ns.lookup('obj') #o = Pyro4.Proxy('PYRO:obj_6bc3296b2d8745828247253eb0a654e1@localhost:54218') o = p5.Proxy(uri) print(o.listarPerfil('*****@*****.**'))
def _try_unload(): try: proxy = api.Proxy(f"PYRO:{server.CORE_NAME}@{host}:{port}") proxy.unloadAllDevices() except errors.CommunicationError: pass