def handle_wsgi_request(self, method): """ Create a WSGI environ dict (using L{create_env} and run the app. """ # Create the WSGI environ dict env = self.create_env(method) self.server.log.info("connected by %s" % str(self.client_address)) # parse path urlpath_to_environ(env, self.path) req = HttpServerResponse(self.server.server_info, self.wfile, env, self.server.debug) run_app(self.server.app, req)
def cgi_app_runner(app): """ Runs "app" in a CGI environment. CGI example script ================== >>> import cgitb; cgitb.enable() >>> import sys >>> from enkel.wansgli.cgigateway import cgi_app_runner >>> from enkel.wansgli.demo_apps import simple_app >>> cgi_app_runner(simple_app) Put the above in a executable python script, and run it using a cgi server. @note: This code is almost a copy of the CGI gateway example in PEP 333. It will be replaced by a more powerfull class that supports logging ++ in the future. @param app: A WSGI app. """ env = dict(environ.items()) env['wsgi.input'] = sys.stdin env['wsgi.errors'] = sys.stderr env['wsgi.version'] = (1, 0) env['wsgi.multithread'] = False env['wsgi.multiprocess'] = True env['wsgi.run_once'] = True if env.get('HTTPS', 'off') in ('on', '1'): env['wsgi.url_scheme'] = 'https' else: env['wsgi.url_scheme'] = 'http' req = Response(sys.stdout, env) run_app(app, req)
def cgi_app_runner(app): """ Runs "app" in a CGI environment. CGI example script ================== >>> import cgitb; cgitb.enable() >>> import sys >>> from enkel.wansgli.cgigateway import cgi_app_runner >>> from enkel.wansgli.demo_apps import simple_app >>> cgi_app_runner(simple_app) Put the above in a executable python script, and run it using a cgi server. @note: This code is almost a copy of the CGI gateway example in PEP 333. It will be replaced by a more powerfull class that supports logging ++ in the future. @param app: A WSGI app. """ env = dict(environ.items()) env['wsgi.input'] = sys.stdin env['wsgi.errors'] = sys.stderr env['wsgi.version'] = (1,0) env['wsgi.multithread'] = False env['wsgi.multiprocess'] = True env['wsgi.run_once'] = True if env.get('HTTPS','off') in ('on','1'): env['wsgi.url_scheme'] = 'https' else: env['wsgi.url_scheme'] = 'http' req = Response(sys.stdout, env) run_app(app, req)
def _run(self, env, debug): buf = StringIO() run_app(self.app, Response(buf, env, debug)) return ResponseTester(env, buf.getvalue())
try: env = self.__class__.parse_scgi_headers(self.rfile) self.server.log.debug(str(env)) check_required_headers(env) except ValueError, e: self.server.log.error("%s: %s" % (self.client_address, e)) else: env["wsgi.input"] = self.rfile self.server.add_common_wsgienv(env) # SCGI servers normally add the Date and Server headers, so we # do not need to use a Response that adds them. res = Response(self.wfile, env, debug=self.server.debug) try: run_app(self.server.app, res) except: self.server.log.exception("Uncaught exception in wsgi app.") self.request.close() class Server(TCPServer, WsgiServerMixIn): """ A synchronous SCGI WSGI server. Usage ===== >>> def myapp(env, start_response): ... start_response("200 ok", [("content-type", "text/plain")]) ... yield "hello world"
try: env = self.__class__.parse_scgi_headers(self.rfile) self.server.log.debug(str(env)) check_required_headers(env) except ValueError, e: self.server.log.error("%s: %s" % (self.client_address, e)) else: env["wsgi.input"] = self.rfile self.server.add_common_wsgienv(env) # SCGI servers normally add the Date and Server headers, so we # do not need to use a Response that adds them. res = Response(self.wfile, env, debug = self.server.debug) try: run_app(self.server.app, res) except: self.server.log.exception( "Uncaught exception in wsgi app.") self.request.close() class Server(TCPServer, WsgiServerMixIn): """ A synchronous SCGI WSGI server. Usage ===== >>> def myapp(env, start_response): ... start_response("200 ok", [("content-type", "text/plain")]) ... yield "hello world"