def make_WebApplicationService(postgresListener, statusWorker): from maasserver.webapp import WebApplicationService site_port = DEFAULT_PORT # config["port"] site_service = WebApplicationService(site_port, postgresListener, statusWorker) return site_service
def make_WebApplicationService(postgresListener, statusWorker): from maasserver.webapp import WebApplicationService site_port = DEFAULT_PORT # config["port"] # Make a socket with SO_REUSEPORT set so that we can run multiple web # applications. This is easier to do from outside of Twisted as there's # not yet official support for setting socket options. s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) # N.B, using the IPv6 INADDR_ANY means that getpeername() returns something # like: ('::ffff:192.168.133.32', 40588, 0, 0) s.bind(('::', site_port)) # Use a backlog of 50, which seems to be fairly common. s.listen(50) # Adopt this socket into Twisted's reactor. site_endpoint = AdoptedStreamServerEndpoint(reactor, s.fileno(), s.family) site_endpoint.port = site_port # Make it easy to get the port number. site_endpoint.socket = s # Prevent garbage collection. site_service = WebApplicationService(site_endpoint, postgresListener, statusWorker) return site_service