def get_free_port(): """return available port on localhost""" free_port = FREE_PORTS.pop() sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: # connect to the given host:port sock.bind(("127.0.0.1", free_port)) except socket.error: free_port = get_free_port() else: sock.close() return free_port
def release_port(port): """call when server stops listening""" FREE_PORTS.append(port)