class_docstr: Server class for hosting Courier RPCs.
  
  This provides a convenience wrapper around the CLIF bindings. The thread pool
  size determines how many method handlers can be executed concurrently.
  
  Server start and termination. No RPCs are served before a call of Start is
  entered or after a call of Join or Stop has returned. A server may be started
  at most once. The functions Stop and Join may block if they need to wait for
  a concurrent Start to complete.
class_docstr_tok: ["Server","class","for","hosting","Courier","RPCs",".","This","provides","a","convenience","wrapper","around","the","CLIF","bindings",".","The","thread","pool","size","determines","how","many","method","handlers","can","be","executed","concurrently",".","Server","start","and","termination",".","No","RPCs","are","served","before","a","call","of","Start","is","entered","or","after","a","call","of","Join","or","Stop","has","returned",".","A","server","may","be","started","at","most","once",".","The","functions","Stop","and","Join","may","block","if","they","need","to","wait","for","a","concurrent","Start","to","complete","."]
code: def port(self) -> int:
      return self._port
  
file_path: launchpad/courier/python/py_server.py
imports: from typing import Optional
  from courier.handlers.python import pybind
  from courier.python import router
  from courier.python import server
  import numpy
  import portpicker
  from six.moves import map
  import tree
label_desc: Use image node_id 2 for calling the Server obj's underlying member method code with example usage: obj.port() and returns: self