def make_server(args, application): """Create a new http server using settings from the command line :param args: An :module:`argparse` namespace populated with the arguments from :func:`add_arguments` :param application: The wsgi application to serve :returns: A verktyg server that can be run by calling the `run_forever` method """ ssl_context = make_ssl_context(args) socket = make_socket(args, ssl_context) server = verktyg_server.make_server(socket, application) return server
def test_yield_no_set_headers(self): def application(environ, start_response): return [b"Who needs headers"] socket = make_inet_socket('localhost') port = socket.getsockname()[1] server = make_server(socket, application) thread = Thread(target=server.serve_forever) thread.start() try: conn = HTTPConnection('localhost', port) conn.request('GET', '/') resp = conn.getresponse() self.assertEqual(resp.status, 500) finally: server.shutdown() thread.join()
def test_basic(self): def application(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/plain; charset=utf-8')] start_response(status, headers) return [b"Hello world!"] socket = make_inet_socket('localhost') port = socket.getsockname()[1] server = make_server(socket, application) thread = Thread(target=server.serve_forever) thread.start() try: conn = HTTPConnection('localhost', port) conn.request('GET', '/') resp = conn.getresponse() self.assertEqual(resp.read(), b"Hello world!") finally: server.shutdown() thread.join()
def __init__( self, app, *, threaded=False, request_handler=None, ssl_context=None ): self._app = app self._threaded = threaded self._request_handler = request_handler self._ssl_context = ssl_context self._host = 'localhost' socket = make_inet_socket(self.host, 0, ssl_context=self._ssl_context) self._port = socket.getsockname()[1] self._server = make_server( socket, self._app, threaded=self._threaded, request_handler=self._request_handler, ) self._thread = Thread(target=self._server.serve_forever) self._thread.start() self.closed = False