예제 #1
0
    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)
예제 #2
0
파일: http.py 프로젝트: espenak/enkel
	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)
예제 #3
0
파일: cgigateway.py 프로젝트: espenak/enkel
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)
예제 #4
0
파일: cgigateway.py 프로젝트: espenak/enkel
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)
예제 #5
0
파일: apptester.py 프로젝트: espenak/enkel
 def _run(self, env, debug):
     buf = StringIO()
     run_app(self.app, Response(buf, env, debug))
     return ResponseTester(env, buf.getvalue())
예제 #6
0
파일: scgi.py 프로젝트: espenak/enkel
        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"

예제 #7
0
파일: apptester.py 프로젝트: espenak/enkel
	def _run(self, env, debug):
		buf = StringIO()
		run_app(self.app, Response(buf, env, debug))
		return ResponseTester(env, buf.getvalue())
예제 #8
0
		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"