コード例 #1
0
ファイル: _client.py プロジェクト: fdrgsp/pymmcore-remote
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
コード例 #2
0
 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
コード例 #3
0
 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
コード例 #4
0
    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
コード例 #5
0
ファイル: _client.py プロジェクト: fdrgsp/pymmcore-remote
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}")
コード例 #6
0
 def remove_node(self, key: str) -> dict:
     with pyro.Proxy(self.url) as proxy:
         node = proxy.remove_node(key)
         return node
コード例 #7
0
 def save_node(self, node) -> dict:
     with pyro.Proxy(self.url) as proxy:
         node = proxy.save_node(node)
         return node
コード例 #8
0
 def get_node(self, key: str) -> Optional[dict]:
     with pyro.Proxy(self.url) as proxy:
         node = proxy.get_node(key)
         return node
コード例 #9
0
 def get_user(self, token: str) -> Optional[User]:
     with pyro.Proxy(self.url) as proxy:
         return proxy.get_user(token)
コード例 #10
0
 def save_edge(self, edge: Union[dict, Edge]) -> dict:
     with pyro.Proxy(self.url) as proxy:
         edge = proxy.save_edge(edge)
         return edge
コード例 #11
0
 def clear(self) -> bool:
     with pyro.Proxy(self.url) as proxy:
         return proxy.clear()
コード例 #12
0
 def reindex(self):
     with pyro.Proxy(self.url) as proxy:
         return proxy.reindex()
コード例 #13
0
 def reload(self) -> bool:
     with pyro.Proxy(self.url) as proxy:
         return proxy.reload()
コード例 #14
0
 def transact(self):
     with pyro.Proxy(self.url) as proxy:
         return proxy.transact()
コード例 #15
0
 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
コード例 #16
0
 def info(self) -> dict:
     with pyro.Proxy(self.url) as proxy:
         return proxy.info()
コード例 #17
0
 def count_nodes(self, term=None, labels: istr = None) -> int:
     with pyro.Proxy(self.url) as proxy:
         return proxy.count_nodes(term, labels)
コード例 #18
0
 def get_schema(self) -> dict:
     with pyro.Proxy(self.url) as proxy:
         return proxy.get_schema()
コード例 #19
0
 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
コード例 #20
0
 def authenticate(self, username: str, password: str) -> str:
     with pyro.Proxy(self.url) as proxy:
         return proxy.authenticate(username, password)
コード例 #21
0
ファイル: pyro-client.py プロジェクト: rafaelslopes1/pyro-sd
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('*****@*****.**'))
コード例 #22
0
ファイル: _client.py プロジェクト: fdrgsp/pymmcore-remote
 def _try_unload():
     try:
         proxy = api.Proxy(f"PYRO:{server.CORE_NAME}@{host}:{port}")
         proxy.unloadAllDevices()
     except errors.CommunicationError:
         pass