#!/usr/bin/python3 from multiprocessing import Process, Pipe from http.server import HTTPServer, BaseHTTPRequestHandler import requests class RequestHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header("Content-type", 'text/plain') self.end_headers() self.wfile.write(b'test') def log_request(self, code='-', size='-'): pass def start_server(pipe): # start a simple server on any available port httpd = HTTPServer(('', 0), RequestHandler) pipe.send(httpd.socket.getsockname()) httpd.handle_request() if __name__ == '__main__': parent, child = Pipe() p = Process(target=start_server, args=(child,)) p.daemon = True p.start() # use the socket address from the test server requests.get('http://{}:{}'.format(*parent.recv()))