Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 1834

Show
Ignore:
Timestamp:
11/20/07 23:10:32
Author:
fumanchu
Message:

New Request.stage attribute to help with debugging.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/_cprequest.py

    r1832 r1834  
    417417    True once the close method has been called, False otherwise.""" 
    418418     
     419    stage = None 
     420    stage__doc = """ 
     421    A string containing the stage reached in the request-handling process. 
     422    This is useful when debugging a live server with hung requests.""" 
     423     
    419424    namespaces = _cpconfig.NamespaceSet( 
    420425        **{"hooks": hooks_namespace, 
     
    445450        # Put a *copy* of the class namespaces into self. 
    446451        self.namespaces = self.namespaces.copy() 
     452         
     453        self.stage = None 
    447454     
    448455    def close(self): 
     
    450457        if not self.closed: 
    451458            self.closed = True 
     459            self.stage = 'on_end_request' 
    452460            self.hooks.run('on_end_request') 
     461            self.stage = 'close' 
    453462     
    454463    def run(self, method, path, query_string, req_protocol, headers, rfile): 
     
    470479         
    471480        """ 
    472          
     481        self.stage = 'run' 
    473482        try: 
    474483            self.error_response = cherrypy.HTTPError(500).set_response 
     
    511520            self.path_info = pi = path[len(self.script_name):] 
    512521             
     522            self.stage = 'respond' 
    513523            self.respond(pi) 
    514524             
     
    550560                     
    551561                    # Get the 'Host' header, so we can HTTPRedirect properly. 
     562                    self.stage = 'process_headers' 
    552563                    self.process_headers() 
    553564                     
     
    555566                    self.hooks = self.__class__.hooks.copy() 
    556567                    self.toolmaps = {} 
     568                    self.stage = 'get_resource' 
    557569                    self.get_resource(path_info) 
    558570                    self.namespaces(self.config) 
    559571                     
     572                    self.stage = 'on_start_resource' 
    560573                    self.hooks.run('on_start_resource') 
    561574                     
     
    564577                            self.process_request_body = False 
    565578                     
     579                    self.stage = 'before_request_body' 
    566580                    self.hooks.run('before_request_body') 
    567581                    if self.process_request_body: 
    568582                        self.process_body() 
    569583                     
     584                    self.stage = 'before_handler' 
    570585                    self.hooks.run('before_handler') 
    571586                    if self.handler: 
     587                        self.stage = 'handler' 
    572588                        cherrypy.response.body = self.handler() 
    573589                     
     590                    self.stage = 'before_finalize' 
    574591                    self.hooks.run('before_finalize') 
    575592                    cherrypy.response.finalize() 
    576593                except (cherrypy.HTTPRedirect, cherrypy.HTTPError), inst: 
    577594                    inst.set_response() 
     595                    self.stage = 'before_finalize (HTTPError)' 
    578596                    self.hooks.run('before_finalize') 
    579597                    cherrypy.response.finalize() 
    580598            finally: 
     599                self.stage = 'on_end_resource' 
    581600                self.hooks.run('on_end_resource') 
    582601        except self.throws: 

Hosted by WebFaction

Log in as guest/cpguest to create tickets