rpyc_registry.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env python
  2. """
  3. The registry server listens to broadcasts on UDP port 18812, answering to
  4. discovery queries by clients and registering keepalives from all running
  5. servers. In order for clients to use discovery, a registry service must
  6. be running somewhere on their local network.
  7. """
  8. from optparse import OptionParser
  9. from rpyc.utils.registry import REGISTRY_PORT, DEFAULT_PRUNING_TIMEOUT
  10. from rpyc.utils.registry import UDPRegistryServer, TCPRegistryServer
  11. from rpyc.lib import setup_logger
  12. parser = OptionParser()
  13. parser.add_option("-m", "--mode", action="store", dest="mode", metavar="MODE",
  14. default="udp", type="string", help="mode can be 'udp' or 'tcp'")
  15. parser.add_option("-p", "--port", action="store", dest="port", type="int",
  16. metavar="PORT", default=REGISTRY_PORT, help="specify a different UDP/TCP listener port")
  17. parser.add_option("-f", "--file", action="store", dest="logfile", type="str",
  18. metavar="FILE", default=None, help="specify the log file to use; the default is stderr")
  19. parser.add_option("-q", "--quiet", action="store_true", dest="quiet",
  20. default=False, help="quiet mode (only errors are logged)")
  21. parser.add_option("-t", "--timeout", action="store", dest="pruning_timeout",
  22. type="int", default=DEFAULT_PRUNING_TIMEOUT, help="sets a custom pruning timeout")
  23. def main():
  24. options, args = parser.parse_args()
  25. if args:
  26. raise ValueError("does not take positional arguments: %r" % (args,))
  27. if options.port < 1 or options.port > 65535:
  28. raise ValueError("invalid TCP/UDP port %r" % (options.port,))
  29. if options.mode.lower() == "udp":
  30. server = UDPRegistryServer(port = options.port,
  31. pruning_timeout = options.pruning_timeout)
  32. elif options.mode.lower() == "tcp":
  33. server = TCPRegistryServer(port = options.port,
  34. pruning_timeout = options.pruning_timeout)
  35. else:
  36. raise ValueError("invalid mode %r" % (options.mode,))
  37. setup_logger(options)
  38. server.start()
  39. if __name__ == "__main__":
  40. main()