CherryPy / cherrypy / _cpmodpy.py

Diff from to

cherrypy/_cpmodpy.py

 LoadModule python_module /usr/lib/apache2/modules/mod_python.so
 
 <Location "/">
-	PythonPath "sys.path+['/path/to/my/application']" 
+	PythonPath "sys.path+['/path/to/my/application']"
 	SetHandler python-program
 	PythonHandler cherrypy._cpmodpy::handler
 	PythonOption cherrypy.setup myapp::setup_server
 	PythonDebug On
-</Location> 
+</Location>
 # End
 
 The actual path to your mod_python.so is dependent on your
 
 def setup(req):
     from mod_python import apache
-    
+
     # Run any setup functions defined by a "PythonOption cherrypy.setup" directive.
     options = req.get_options()
     if 'cherrypy.setup' in options:
                 mod = __import__(modname, globals(), locals(), [fname])
                 func = getattr(mod, fname)
                 func()
-    
+
     cherrypy.config.update({'log.screen': False,
                             "tools.ignore_headers.on": True,
                             "tools.ignore_headers.headers": ['Range'],
                             })
-    
+
     engine = cherrypy.engine
     if hasattr(engine, "signal_handler"):
         engine.signal_handler.unsubscribe()
         engine.console_control_handler.unsubscribe()
     engine.autoreload.unsubscribe()
     cherrypy.server.unsubscribe()
-    
+
     def _log(msg, level):
         newlevel = apache.APLOG_ERR
         if logging.DEBUG >= level:
         # Also, "When server is not specified...LogLevel does not apply..."
         apache.log_error(msg, newlevel, req.server)
     engine.subscribe('log', _log)
-    
+
     engine.start()
-    
+
     def cherrypy_cleanup(data):
         engine.exit()
     try:
         if not _isSetUp:
             setup(req)
             _isSetUp = True
-        
+
         # Obtain a Request object from CherryPy
         local = req.connection.local_addr
         local = httputil.Host(local[0], local[1], req.connection.local_host or "")
         remote = req.connection.remote_addr
         remote = httputil.Host(remote[0], remote[1], req.connection.remote_host or "")
-        
+
         scheme = req.parsed_uri[0] or 'http'
         req.get_basic_auth_pw()
-        
+
         try:
             # apache.mpm_query only became available in mod_python 3.1
             q = apache.mpm_query
             bad_value = ("You must provide a PythonOption '%s', "
                          "either 'on' or 'off', when running a version "
                          "of mod_python < 3.1")
-            
+
             threaded = options.get('multithread', '').lower()
             if threaded == 'on':
                 threaded = True
                 threaded = False
             else:
                 raise ValueError(bad_value % "multithread")
-            
+
             forked = options.get('multiprocess', '').lower()
             if forked == 'on':
                 forked = True
                 forked = False
             else:
                 raise ValueError(bad_value % "multiprocess")
-        
+
         sn = cherrypy.tree.script_name(req.uri or "/")
         if sn is None:
             send_response(req, '404 Not Found', [], '')
             headers = copyitems(req.headers_in)
             rfile = _ReadOnlyRequest(req)
             prev = None
-            
+
             try:
                 redirections = []
                 while True:
                     request.multiprocess = bool(forked)
                     request.app = app
                     request.prev = prev
-                    
+
                     # Run the CherryPy Request object and obtain the response
                     try:
                         request.run(method, path, qs, reqproto, headers, rfile)
                         ir = sys.exc_info()[1]
                         app.release_serving()
                         prev = request
-                        
+
                         if not recursive:
                             if ir.path in redirections:
                                 raise RuntimeError("InternalRedirector visited the "
                                 if qs:
                                     qs = "?" + qs
                                 redirections.append(sn + path + qs)
-                        
+
                         # Munge environment and try again.
                         method = "GET"
                         path = ir.path
                         qs = ir.query_string
                         rfile = BytesIO()
-                
+
                 send_response(req, response.output_status, response.header_list,
                               response.body, response.stream)
             finally:
 def send_response(req, status, headers, body, stream=False):
     # Set response status
     req.status = int(status[:3])
-    
+
     # Set response headers
     req.content_type = "text/plain"
     for header, value in headers:
             req.content_type = value
             continue
         req.headers_out.add(header, value)
-    
+
     if stream:
         # Flush now so the status and headers are sent immediately.
         req.flush()
-    
+
     # Set response body
     if isinstance(body, basestring):
         req.write(body)
 
 
 class ModPythonServer(object):
-    
+
     template = """
 # Apache2 server configuration file for running CherryPy with mod_python.
 
 %(opts)s
 </Location>
 """
-    
+
     def __init__(self, loc="/", port=80, opts=None, apache_path="apache",
                  handler="cherrypy._cpmodpy::handler"):
         self.loc = loc
         self.opts = opts
         self.apache_path = apache_path
         self.handler = handler
-    
+
     def start(self):
         opts = "".join(["    PythonOption %s %s\n" % (k, v)
                         for k, v in self.opts])
                                      "opts": opts,
                                      "handler": self.handler,
                                      }
-        
+
         mpconf = os.path.join(os.path.dirname(__file__), "cpmodpy.conf")
         f = open(mpconf, 'wb')
         try:
             f.write(conf_data)
         finally:
             f.close()
-        
+
         response = read_process(self.apache_path, "-k start -f %s" % mpconf)
         self.ready = True
         return response
-    
+
     def stop(self):
         os.popen("apache -k stop")
         self.ready = False
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.